亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種分析Linux內(nèi)核動態(tài)執(zhí)行的方法

文檔序號:6425663閱讀:189來源:國知局
專利名稱:一種分析Linux內(nèi)核動態(tài)執(zhí)行的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機操作系統(tǒng)工作中對系統(tǒng)安全性進行分析的方法。確切講本發(fā)明是一種遵循POSIX標準,對Linux操作系統(tǒng)的內(nèi)核在動態(tài)執(zhí)行過程中所涉及的函數(shù)、語句的一種追蹤、分析方法。
背景技術(shù)
作為開源軟件的代表,Linux的應(yīng)用越來越廣泛,但是對Linux的安全分析、安全級別的驗證還有很大的欠缺。與Windows操作系統(tǒng)因商業(yè)而帶來的費用、代碼不公開而可能存在“后門”、病毒越來越多等一系列不利因素相比,Linux操作系統(tǒng)則具有免費,代碼開放等優(yōu)點,從而逐漸為更多的企業(yè)、個人接受。伴隨著更加廣泛的應(yīng)用,Linux可能會在安全相關(guān)的領(lǐng)域有更多的應(yīng)用,從而分析Linux的安全級別是否達到應(yīng)用的需求也越來越有必要。但是由于應(yīng)用環(huán)境的不同、Linux本身非常龐大,對Linux的安全級別的分析還存在 很大的問題。現(xiàn)今,還沒有分析表明,Linux系統(tǒng)的應(yīng)用達到IEC61508中所定義的SIL4的級別。而在操作系統(tǒng)工作前,對其安全性進行分析是十分必要的。但現(xiàn)階段尚缺少這方面的技術(shù)?,F(xiàn)有的開源軟件strace可以追蹤可執(zhí)行文件用到的系統(tǒng)調(diào)用,但它只能追蹤確定的可執(zhí)行文件,而且對多個可執(zhí)行文件的追蹤結(jié)果不能很好的區(qū)分,另外在其結(jié)果中還有除了系統(tǒng)調(diào)用以外的很多附加信息;現(xiàn)有的開源軟件KFT可以追蹤到設(shè)定的入口函數(shù)和出口函數(shù)之間的內(nèi)核信息,并且KFT的kd功能將結(jié)果轉(zhuǎn)換成調(diào)用樹的形式,但是KFT每次只能按照這一次的設(shè)定來追蹤,生成的多個調(diào)用樹不能自己做比較;在編譯內(nèi)核后的內(nèi)核目錄下會生成tags文件,該文件中含有內(nèi)核函數(shù)名,定義、聲明該內(nèi)核函數(shù)的內(nèi)核文件,以及一些其他的信息;現(xiàn)有的開源程序gcov能追蹤到內(nèi)核文件的執(zhí)行時的覆蓋情況。

發(fā)明內(nèi)容
本發(fā)明提供了一種對Linux操作系統(tǒng)的內(nèi)核在動態(tài)執(zhí)行過程中所涉及的函數(shù)、語句分析的方法。本發(fā)明的分析Linux內(nèi)核動態(tài)執(zhí)行的方法是將開源程序strace通過程序進行擴展,經(jīng)擴展后的strace在原來的基礎(chǔ)上自動的對擬分析項目中的每一個可執(zhí)行文件進行追蹤,同時過濾出相應(yīng)的被追蹤的可執(zhí)行文件在執(zhí)行過程中的系統(tǒng)調(diào)用,將過濾出的系統(tǒng)調(diào)用給予一個新命名單獨保存在與該可執(zhí)行文件相對應(yīng)的另外建立的新文件中;將開源程序的KFT功能通過程序進行擴展,擴展后的KFT在原來的基礎(chǔ)上可自動追蹤每個系統(tǒng)調(diào)用所調(diào)用的內(nèi)核函數(shù),并自動對同一個文件中每個系統(tǒng)調(diào)用追蹤100次,創(chuàng)建數(shù)據(jù)庫,并在數(shù)據(jù)庫的表I中保存KFT追蹤結(jié)果,對結(jié)果的調(diào)用樹去重,建立追蹤結(jié)果和調(diào)用樹的對應(yīng)關(guān)系,在前述數(shù)據(jù)庫的表2中保存,在KFT對所有系統(tǒng)調(diào)用追蹤結(jié)束后,將當(dāng)前配置下的函數(shù)映射地址保存在前述數(shù)據(jù)庫的表3,將autoKFT執(zhí)行時的系統(tǒng)環(huán)境信息保存在數(shù)據(jù)庫的前述數(shù)據(jù)庫的表4中;在編譯過Linux源代碼的目錄下會生成tags文件,從數(shù)據(jù)庫表I中取出前述步驟中KFT追蹤到的內(nèi)核函數(shù),在tags中過濾這些內(nèi)核函數(shù)以及內(nèi)核函數(shù)定義、聲明的內(nèi)核文件,并在前述數(shù)據(jù)庫的表5中保存這些內(nèi)核函數(shù)名和對應(yīng)的內(nèi)核文件名;將開源程序gcov通過程序進行擴展,使擴展后的gcov在原來的基礎(chǔ)上能得到內(nèi)核c文件中函數(shù)的起始行的數(shù)、結(jié)束行的數(shù)以及執(zhí)行覆蓋率,以及內(nèi)核C文件中語句塊的起始、結(jié)束的 行數(shù)和執(zhí)行的次數(shù),調(diào)用這些功能自動處理每一個內(nèi)核文件的gcov結(jié)果,得到執(zhí)行過程中用到的每一個內(nèi)核文件中函數(shù)覆蓋率,保存到前述數(shù)據(jù)庫的表6中,得到調(diào)用過的每個內(nèi)核文件中語句塊的起始、終止行數(shù)、執(zhí)行次數(shù),將結(jié)果存在前述數(shù)據(jù)庫的表7中,對這些內(nèi)核文件預(yù)編譯成匯編文件,將結(jié)果保存在前述數(shù)據(jù)庫的表8中,將autogcov執(zhí)行時的系統(tǒng)環(huán)境信息保存到前述數(shù)據(jù)庫的表4中;最終在網(wǎng)頁上顯示從數(shù)據(jù)庫中的每個系統(tǒng)調(diào)用的名稱,對每個系統(tǒng)調(diào)用的每次追蹤讀取執(zhí)行時間,統(tǒng)計出最大、最小執(zhí)行時間,計算出平均執(zhí)行時間和時間方差,在網(wǎng)頁上顯示,每個系統(tǒng)調(diào)用鏈接顯示追蹤的結(jié)果,對每個系統(tǒng)調(diào)用顯示調(diào)用樹的個數(shù),并鏈接顯示調(diào)用樹;調(diào)用樹中的每個內(nèi)核函數(shù)鏈接到定義該內(nèi)核函數(shù)的文件,顯示內(nèi)容包括該文件中函數(shù)的覆蓋率,以及每個語句的執(zhí)行次數(shù)。上述內(nèi)容中擴展的autostrace、autoKFT、autotags和autogcov可以使用腳本實現(xiàn),例如使用shell或peri或python實現(xiàn),也可以用如C語言實現(xiàn),用這些程序語言編寫相應(yīng)的源程序,即代碼,以實現(xiàn)相關(guān)的要求。本發(fā)明的一個實施例是采用shell腳本分別對strace、KFT、tags (去掉)和gcov進行擴展,其中對strace的擴展是通過遍歷得到被分析項目中的每一個可執(zhí)行文件,使strace自動追蹤被分析項目中的每一個可執(zhí)行文件,并過濾出相應(yīng)的被追蹤的可執(zhí)行文件在執(zhí)行過程中的系統(tǒng)調(diào)用,將過濾出的系統(tǒng)調(diào)用給予一個新命名單獨保存在與該可執(zhí)行文件相對應(yīng)的另外建立的新文件中;使用循環(huán)的方式,使KFT自動追蹤每個系統(tǒng)調(diào)用所調(diào)用的內(nèi)核函數(shù),并自動對同一個文件中每個系統(tǒng)調(diào)用追蹤100次,同時在新建數(shù)據(jù)庫的表I中保存追蹤結(jié)果,對結(jié)果的調(diào)用樹去重,建立保存追蹤結(jié)果和調(diào)用樹的對應(yīng)關(guān)系并在新建立的數(shù)據(jù)庫表2中保存,系統(tǒng)調(diào)用追蹤結(jié)束后,在數(shù)據(jù)庫表3中保存當(dāng)前配置下的函數(shù)映射地址,將autoKFT執(zhí)行時的系統(tǒng)環(huán)境信息保存在數(shù)據(jù)庫的前述數(shù)據(jù)庫的表4中;編寫autoctags從數(shù)據(jù)庫中自動取出前述擴展后的KFT追蹤到的內(nèi)核函數(shù),根據(jù)編譯后內(nèi)核目錄下的tags文件,得到在此環(huán)境下函數(shù)定義的內(nèi)核文件,并在數(shù)據(jù)庫表5中保存定義這些內(nèi)核文件的函數(shù)名和對應(yīng)的內(nèi)核文件;修改了一些gcov的代碼,能處理gcov得到的結(jié)果,使擴展后的gcov在原來的基礎(chǔ)上得到內(nèi)核c文件中函數(shù)的起始行的數(shù)、結(jié)束行的數(shù)以及執(zhí)行覆蓋率,以及內(nèi)核C文件中語句塊的起始、結(jié)束的行數(shù)以及執(zhí)行的次數(shù),再調(diào)用這些功能自動處理每一個內(nèi)核文件的gcov結(jié)果,得到執(zhí)行過程中用到的每一個內(nèi)核文件中函數(shù)覆蓋率保存在數(shù)據(jù)庫表6中,將語句塊的起始、終止行數(shù)、執(zhí)行次數(shù),將結(jié)果存在數(shù)據(jù)庫表7中,內(nèi)核文件編譯成匯編格式保存在數(shù)據(jù)庫表8中,執(zhí)行時的系統(tǒng)環(huán)境信息保存到前述數(shù)據(jù)庫的表4中。使用cgi-bin的腳本實現(xiàn)網(wǎng)頁。從數(shù)據(jù)庫中讀每個系統(tǒng)調(diào)用的名稱,對每個系統(tǒng)調(diào)用的每次追蹤讀取執(zhí)行時間,統(tǒng)計出最大、最小執(zhí)行時間,計算出平均執(zhí)行時間和時間方差。每次追蹤,最大、最小執(zhí)行時間都通過traCe_id鏈接到一個新的網(wǎng)頁界面,顯示這次追蹤的具體信息。對每個系統(tǒng)調(diào)用統(tǒng)計出調(diào)用樹的個數(shù),對每個調(diào)用樹鏈接到一個新的界面,傳遞tree_id,在數(shù)據(jù)庫中找到對應(yīng)的trace_id,取出該trace_id的原始結(jié)果,使用’ kd’功能轉(zhuǎn)化成執(zhí)行樹的形式在網(wǎng)頁上顯示。執(zhí)行樹上的每一個內(nèi)核函數(shù)鏈接到一個新的網(wǎng)頁界面,通過傳遞內(nèi)核函數(shù)的名稱,在數(shù)據(jù)庫中找到到該函數(shù)的定義文件,在通過該文件名在數(shù)據(jù)庫中取出關(guān)于該內(nèi)核文件的gcov結(jié)果,并在網(wǎng)頁上顯示。本發(fā)明利用對現(xiàn)有的開源程序改造,較為方便地為Linux的安全級別分析提供數(shù)據(jù)支持,并為其后繼的工作,如開發(fā)或者改進提供便利,而且通過本發(fā)明的技術(shù)方案克服現(xiàn)有的相關(guān)開源程序及tags中的不足,例如可以使strace和KFT可以自動追蹤被檢測項目中的每個可執(zhí)行文件,可以自動的對內(nèi)核函數(shù)的執(zhí)行覆蓋情況進行統(tǒng)計。本發(fā)明還具有如下優(yōu)點I、能夠追蹤、記錄Linux內(nèi)核動態(tài)執(zhí)行的行為,包括執(zhí)行樹、執(zhí)行時間、代碼覆蓋情況等,為Linux的安全分析提供了數(shù)據(jù)支持。 2、擴展了已有的Linux工具,能夠自動的追蹤過濾,得到想要的結(jié)果,減少了人為操作所需要的時間和可能的誤操作。3、本發(fā)明是遵循POSIX標準,而POSIX標準具有很強的通用性,所以能廣泛的應(yīng)用到遵循POSix標準的領(lǐng)域中。


附圖I為系統(tǒng)架構(gòu)示意圖。附圖2為Linux的架構(gòu)示意圖。附圖3為開源工具的功能及關(guān)系圖。附圖4是關(guān)于系統(tǒng)調(diào)用的網(wǎng)頁界面。
具體實施例方式以下結(jié)合本發(fā)明的一個具體實施方式
解說本實施例的開發(fā)平臺如下硬件選用DELL 2950型號服務(wù)器,處理器Xeon 2. OGHz,內(nèi)存2Gb。軟件選用Debian Linux作為操作系統(tǒng),支持KFT功能的2. 6. 23的內(nèi)核和支持gcov功能的2. 6. 23的內(nèi)核。開發(fā)語言shelI。測試項目posixtestsuite項目中的應(yīng)用程序。具體實現(xiàn)I、對 strace 的擴展采用循環(huán)語句的方式,用shell腳本編寫psx. sh,將其加入strace中,經(jīng)此擴展后的程序命名為autostrace。在實際的運行中,由運行posixtestsuite中的每一個可執(zhí)行文件,同時使用strace進行追蹤;過濾strace的結(jié)果,得到此每個可執(zhí)行文件運行過程中用到的系統(tǒng)調(diào)用。首先,使用自帶的psxtsstrce功能,將posixtestsuite中的文件編譯,得到可執(zhí)行文件,這些可執(zhí)行文件以.exe或.sh結(jié)尾;接著,psx. sh腳本查找posixtestsuite下的所有以· exe或· sh結(jié)尾的文件,使用“if [-X $TAGET] ;then”判斷這些文件是否可執(zhí)行,將這些所有可執(zhí)行的文件保存在tmp文件中;然后,對tmp中的每一個文件FILE逐個運行追蹤,具體實現(xiàn)過程如下tmp中的每個可執(zhí)行文件保存的形式是目錄$DIR可執(zhí)行文件$file,使用psxtsstrace中的dir_and_file函數(shù)將這些目錄和文件名分開,并去掉后綴名。此時,SFILE是包含路徑的可執(zhí)行文件名,$DIR為目錄,$file_name為去掉后綴名的文件名,再增加兩個變量,其代碼如下raw_data = $DIR$tile_name” · log”kcalls = $DIR$file_name “· syscall”再由autostrace利用原strace的命令進行追蹤,并將結(jié)果保存在$raw_data文件中,其代碼為 strace-f-o$raw_data $FILE。對于strace的結(jié)果,過濾出其中的沒有的信息,只保留系統(tǒng)調(diào)用中,其代碼為sed/ /·*(·*)·*/ ! d' $raw_data > $tmplawk 1 {len = index($2, " ( " ) ;len = len_l ;print substr ($2,1,len)} 1 $tmpl > $tmp2sed/ /'$/d/ $tmp2 > $tmpl將這些系統(tǒng)調(diào)用以'sys_/開頭,但是有些系統(tǒng)調(diào)用以_開頭,比如_exit,得到的結(jié)果sys—exit,這是不識別的,需要去掉一個_,從而改成sys_exit中,其代碼為awd1 {print" sys_" $1} 1 $tmpl > $tmp3sed" s/—/_/g" $tmp3 I > $tmpl去掉重復(fù)的系統(tǒng)調(diào)用并去掉空行中,其代碼為sort-u$tmpl I > $tmp2sed' /'$/d/ $tmp2 I > $kcalls此時,這些$kcalls文件保留了正確系統(tǒng)調(diào)用信息,將這些文件名(包括路徑)放到專門的文件syscall中中,其代碼為echo $kcalls > > $ SYSCALL2、對KFT的擴展采用循環(huán)語句的方式,用shell腳本編寫autokft. sh,將其加入KFT中,經(jīng)此擴展后的程序命名為autokft。在運彳丁中autokft使用KFT原有的功能,對每Iv系統(tǒng)調(diào)用都能追蹤100次,在數(shù)據(jù)庫中保存追蹤的結(jié)果,使用'kd'功能將追蹤到的結(jié)果生成系統(tǒng)調(diào)用樹的形式,去重后將結(jié)果在數(shù)據(jù)庫中保存。Autokft是在內(nèi)核支持kft的模式下執(zhí)行的。在autostrace生成的syscall文件中,每行都是一個后綴是· syscall的文件,逐個讀出其中的每個文件進處理。每個.syscall文件($SYSCALL)都是“所在的目錄$DIR$file. syscall”的形式。查看此文件對應(yīng)的可執(zhí)行文件是否存在中,其代碼為
權(quán)利要求
1.一種分析Linux內(nèi)核動態(tài)執(zhí)行的方法,其特征是 將開源程序strace通過程序進行擴展,經(jīng)擴展后的strace在原來的基礎(chǔ)上自動的對擬分析項目中的每一個可執(zhí)行文件進行追蹤,同時過濾出相應(yīng)的被追蹤的可執(zhí)行文件在執(zhí)行過程中的系統(tǒng)調(diào)用,將過濾出的系統(tǒng)調(diào)用給予一個新命名單獨保存在與該可執(zhí)行文件相對應(yīng)的另外建立的新文件中;將開源程序的KFT功能通過程序進行擴展,擴展后的KFT在原來的基礎(chǔ)上可自動追蹤每個系統(tǒng)調(diào)用所調(diào)用的內(nèi)核函數(shù),并自動對同一個文件中每個系統(tǒng)調(diào)用追蹤100次,創(chuàng)建數(shù)據(jù)庫,并在數(shù)據(jù)庫的表I中保存KFT追蹤結(jié)果,對結(jié)果的調(diào)用樹去重,建立追蹤結(jié)果和調(diào)用樹的對應(yīng)關(guān)系,在前述數(shù)據(jù)庫的表2中保存,在KFT對所有系統(tǒng)調(diào)用追蹤結(jié)束后,將當(dāng)前配置下的函數(shù)映射地址保存在前述數(shù)據(jù)庫的表3,將autoKFT執(zhí)行時的系統(tǒng)環(huán)境信息保存在數(shù)據(jù)庫的前述數(shù)據(jù)庫的表4中;在編譯過Linux源代碼的目錄下會生成tags文件,從數(shù)據(jù)庫表I中取出前述步驟中KFT追蹤到的內(nèi)核函數(shù),在tags中過濾這些內(nèi)核函數(shù)以及內(nèi)核函數(shù)定義、聲明的內(nèi)核文件,并在前述數(shù)據(jù)庫的表5中保存這些內(nèi)核函數(shù)名和對應(yīng)的內(nèi)核文件名;將開源程序gcov通過程序進行擴展,使擴展后的gcov在原來的基礎(chǔ)上能得到內(nèi)核c文件中函數(shù)的起始行的數(shù)、結(jié)束行的數(shù)以及執(zhí)行覆蓋率,以及內(nèi)核C文件中語句塊的起始、結(jié)束的行數(shù)和執(zhí)行的次數(shù),調(diào)用這些功能自動處理每一個內(nèi)核文件的gcov結(jié)果,得到執(zhí)行過程中用到的每一個內(nèi)核文件中函數(shù)覆蓋率,保存到前述數(shù)據(jù)庫的表6中,得到調(diào)用過的每個內(nèi)核文件中語句塊的起始、終止行數(shù)、執(zhí)行次數(shù),將結(jié)果存在前述數(shù)據(jù)庫的表7中,對這些內(nèi)核文件預(yù)編譯成匯編文件,將結(jié)果保存在前述數(shù)據(jù)庫的表8中,將autogcov執(zhí)行時的系統(tǒng)環(huán)境信息保存到前述數(shù)據(jù)庫的表4中;最終在網(wǎng)頁上顯示從數(shù)據(jù)庫中的每個系統(tǒng)調(diào)用的名稱,對每個系統(tǒng)調(diào)用的每次追蹤讀取執(zhí)行時間,統(tǒng)計出最大、最小執(zhí)行時間,計算出平均執(zhí)行時間和時間方差,在網(wǎng)頁上顯示,每個系統(tǒng)調(diào)用鏈接顯示追蹤的結(jié)果,對每個系統(tǒng)調(diào)用顯示調(diào)用樹的個數(shù),并鏈接顯示調(diào)用樹;調(diào)用樹中的每個內(nèi)核函數(shù)鏈接到定義該內(nèi)核函數(shù)的文件,顯示內(nèi)容包括該文件中函數(shù)的覆蓋率,以及每個語句的執(zhí)行次數(shù)。
2.根據(jù)權(quán)利要求I所述的一種分析Linux內(nèi)核動態(tài)執(zhí)行的方法,其特征是采用shell腳本分別對strace、KFT、tags和gcov進行擴展,其中 對strace的擴展是通過遍歷得到被分析項目中的每一個可執(zhí)行文件,使strace自動追蹤被分析項目中的每一個可執(zhí)行文件,并過濾出相應(yīng)的被追蹤的可執(zhí)行文件在執(zhí)行過程中的系統(tǒng)調(diào)用,將過濾出的系統(tǒng)調(diào)用給予一個新命名單獨保存在與該可執(zhí)行文件相對應(yīng)的另外建立的新文件中; 使用循環(huán)的方式,使KFT自動追蹤每個系統(tǒng)調(diào)用所調(diào)用的內(nèi)核函數(shù),并自動對同一個文件中每個系統(tǒng)調(diào)用追蹤100次,同時在新建數(shù)據(jù)庫的表I中保存追蹤結(jié)果,對結(jié)果的調(diào)用樹去重,建立保存追蹤結(jié)果和調(diào)用樹的對應(yīng)關(guān)系并在新建立的數(shù)據(jù)庫表2中保存,系統(tǒng)調(diào)用追蹤結(jié)束后,在數(shù)據(jù)庫表3中保存當(dāng)前配置下的函數(shù)映射地址,將autoKFT執(zhí)行時的系統(tǒng)環(huán)境信息保存在數(shù)據(jù)庫的前述數(shù)據(jù)庫的表4中; 編寫autoctags從數(shù)據(jù)庫中自動取出前述擴展后的KFT追蹤到的內(nèi)核函數(shù),根據(jù)編譯后內(nèi)核目錄下的tags文件,得到在此環(huán)境下函數(shù)定義的內(nèi)核文件,并在數(shù)據(jù)庫表5中保存定義這些內(nèi)核文件的函數(shù)名和對應(yīng)的內(nèi)核文件; 修改了一些gcov的代碼,能處理gcov得到的結(jié)果,使擴展后的gcov在原來的基礎(chǔ)上得到內(nèi)核C文件中函數(shù)的起始行的數(shù)、結(jié)束行的數(shù)以及執(zhí)行覆蓋率,以及內(nèi)核C文件中語句塊的起始、結(jié)束的行數(shù)以及執(zhí)行的次數(shù),再調(diào)用這些功能自動處理每一個內(nèi)核文件的gcov結(jié)果,得到執(zhí)行過程中用到的每一個內(nèi)核文件中函數(shù)覆蓋率保存在數(shù)據(jù)庫表6中,將語句塊的起始、終止行數(shù)、執(zhí)行次數(shù),將結(jié)果存在數(shù)據(jù)庫表7中,內(nèi)核文件編譯成匯編格式保存在數(shù)據(jù)庫表8中,執(zhí)行時的系統(tǒng)環(huán)境信息保存到前述數(shù)據(jù)庫的表4中。
使用cgi-bin的腳本實現(xiàn)網(wǎng)頁。從數(shù)據(jù)庫中讀每個系統(tǒng)調(diào)用的名稱,對每個系統(tǒng)調(diào)用的每次追蹤讀取執(zhí)行時間,統(tǒng)計出最大、最小執(zhí)行時間,計算出平均執(zhí)行時間和時間 方差。每次追蹤,最大、最小執(zhí)行時間都通過traCe_id鏈接到一個新的網(wǎng)頁界面,顯示這次追蹤的具體信息。對每個系統(tǒng)調(diào)用統(tǒng)計出調(diào)用樹的個數(shù),對每個調(diào)用樹鏈接到一個新的界面,傳遞tree_id,在數(shù)據(jù)庫中找到對應(yīng)的trace_id,取出該trace_id的原始結(jié)果,使用’ kd’功能轉(zhuǎn)化成執(zhí)行樹的形式在網(wǎng)頁上顯示。執(zhí)行樹上的每一個內(nèi)核函數(shù)鏈接到一個新的網(wǎng)頁界面,通過傳遞內(nèi)核函數(shù)的名稱,在數(shù)據(jù)庫中找到到該函數(shù)的定義文件,在通過該文件名在數(shù)據(jù)庫中取出關(guān)于該內(nèi)核文件的gcov結(jié)果,并在網(wǎng)頁上顯示。
全文摘要
本發(fā)明公開一種對Linux操作系統(tǒng)的內(nèi)核在動態(tài)執(zhí)行過程中所涉及的函數(shù)、語句進行追蹤、分析的方法。本發(fā)明的的方法是通過對開源程序strace、KFT、tags和gcov進行擴展,使這些程序在原有的基礎(chǔ)上對每一個可執(zhí)行文件進行追蹤,同時過濾出相應(yīng)的被追蹤的可執(zhí)行文件在執(zhí)行過程中的系統(tǒng)調(diào)用等信息,并將這些信息存入新建立的數(shù)據(jù)庫中,最終在網(wǎng)頁上顯示相關(guān)的信息,并鏈接顯示調(diào)用樹;調(diào)用樹中的每個內(nèi)核函數(shù)鏈接到定義該內(nèi)核函數(shù)的文件;顯示內(nèi)容包括該文件中函數(shù)的覆蓋率;以及每個語句的執(zhí)行次數(shù)。
文檔編號G06F11/36GK102810078SQ20111015116
公開日2012年12月5日 申請日期2011年6月2日 優(yōu)先權(quán)日2011年6月2日
發(fā)明者周慶國, 邊立軍, 金國軍, 盛勇, 孫彥猛, 楊紅剛 申請人:蘭州大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1