二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)及其測(cè)試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種測(cè)試系統(tǒng)及其測(cè)試方法,具體地,涉及一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)及其測(cè)試方法。
【背景技術(shù)】
[0002]目前二進(jìn)制碼覆蓋率測(cè)試主要從兩方面實(shí)現(xiàn):一、通過硬件或飛線方式高頻監(jiān)控地址總線,記錄執(zhí)行過的地址信息,事后根據(jù)監(jiān)控到的地址信息統(tǒng)計(jì)出覆蓋率,此方法針對(duì)處理器主頻太高、運(yùn)行時(shí)存在指令預(yù)取等都可能導(dǎo)致監(jiān)控遺漏或運(yùn)行軌跡誤判等等,絕大部分處理器都很難準(zhǔn)確統(tǒng)計(jì)。二、采用源代碼插裝的方法,在源代碼的控制流節(jié)點(diǎn)處插入輸出信息,測(cè)試過程中監(jiān)控輸出信息,實(shí)時(shí)得到被測(cè)程序的覆蓋率信息。三、采用純JTAG在調(diào)試方式通過設(shè)置斷點(diǎn)、單步等手段記錄目標(biāo)碼執(zhí)行軌跡,定時(shí)統(tǒng)計(jì)分析執(zhí)行軌跡分析出覆蓋率,此方法雖然理論上能保證覆蓋率正確性,但針對(duì)絕大部份實(shí)時(shí)性較強(qiáng)的二進(jìn)制碼測(cè)試很難實(shí)施。
【發(fā)明內(nèi)容】
[0003]針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)及其測(cè)試方法,其可以在盡可能的前提下減少對(duì)被測(cè)程序的實(shí)時(shí)性影響。
[0004]根據(jù)本發(fā)明的一個(gè)方面,提供一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng),其特征在于,包括:
[0005]二進(jìn)制分析模塊,用于對(duì)被測(cè)二進(jìn)制碼的所有靜態(tài)分析;
[0006]二進(jìn)制執(zhí)行監(jiān)控模塊,用于執(zhí)行被測(cè)二進(jìn)制碼、監(jiān)控執(zhí)行路徑;
[0007]覆蓋率統(tǒng)計(jì)分析模塊,用于對(duì)被測(cè)二進(jìn)制碼執(zhí)行的覆蓋率分析。
[0008]優(yōu)選地,所述二進(jìn)制分析模塊包括如下模塊:
[0009]符號(hào)解析模塊:用于分析二進(jìn)制關(guān)聯(lián)的符號(hào)信息;
[0010]二進(jìn)制控制流分析模塊:用于對(duì)二進(jìn)制的控制流分析,生成地址表信息。
[0011]優(yōu)選地,所述二進(jìn)制執(zhí)行監(jiān)控模塊包括如下模塊:
[0012]執(zhí)行初始化模塊:用于執(zhí)行前初始化準(zhǔn)備工作;
[0013]監(jiān)控程序執(zhí)行模塊:用于對(duì)被測(cè)二進(jìn)制軟件的關(guān)鍵點(diǎn)監(jiān)控,并記錄。
[0014]本發(fā)明還提供一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)的測(cè)試方法,其特征在于,包括以下步驟:
[0015]步驟一:通過二進(jìn)制分析模塊,分析出二進(jìn)制碼的控制流結(jié)構(gòu),并產(chǎn)生地址表;
[0016]步驟二:基于JTAG調(diào)試手段初始化被測(cè)程序,在地址表中的關(guān)鍵點(diǎn)添加監(jiān)控點(diǎn);啟動(dòng)監(jiān)控程序運(yùn)行;
[0017]步驟三:監(jiān)控程序是否觸發(fā)到監(jiān)控點(diǎn),若觸發(fā)則記錄監(jiān)控點(diǎn),否則繼續(xù)運(yùn)行直到停止被測(cè)程序運(yùn)行;
[0018]步驟四:分析執(zhí)行過的監(jiān)控點(diǎn),統(tǒng)計(jì)二進(jìn)制碼的覆蓋率信息。
[0019]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:本發(fā)明在程序執(zhí)行前預(yù)分析監(jiān)控區(qū)域的入口所在的執(zhí)行路徑,在所在路徑發(fā)生改變地址處添加監(jiān)控點(diǎn),當(dāng)程序執(zhí)行到當(dāng)前監(jiān)控點(diǎn)時(shí)自動(dòng)進(jìn)入監(jiān)控程序,并記錄下監(jiān)控點(diǎn),完成后回到監(jiān)控點(diǎn)繼續(xù)執(zhí)行。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:其一,只在被監(jiān)控程序監(jiān)控區(qū)間內(nèi)所有入口下有跳轉(zhuǎn)的地址添加監(jiān)控點(diǎn),最大限度的減少的對(duì)被測(cè)程序的影響;其二,監(jiān)控碼和被測(cè)程序一起運(yùn)行在目標(biāo)系統(tǒng),是在被測(cè)程序全速運(yùn)行下進(jìn)行的覆蓋率分析;所以本發(fā)明在盡可能的前提下減少對(duì)被測(cè)程序的實(shí)時(shí)性影響,解決了不插裝代碼前提下分析被測(cè)程序的二進(jìn)制碼覆蓋率。
【附圖說明】
[0020]通過閱讀參照以下附圖對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
[0021]圖1為本發(fā)明二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)的原理框圖。
【具體實(shí)施方式】
[0022]下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明的保護(hù)范圍。
[0023]如圖1所示,本發(fā)明二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)包括:
[0024]二進(jìn)制分析模塊,用于對(duì)被測(cè)二進(jìn)制碼的所有靜態(tài)分析;
[0025]二進(jìn)制執(zhí)行監(jiān)控模塊,用于執(zhí)行被測(cè)二進(jìn)制碼、監(jiān)控執(zhí)行路徑;
[0026]覆蓋率統(tǒng)計(jì)分析模塊,用于對(duì)被測(cè)二進(jìn)制碼執(zhí)行的覆蓋率分析。
[0027]其中,二進(jìn)制分析模塊包括如下模塊:
[0028]符號(hào)解析模塊:用于分析二進(jìn)制關(guān)聯(lián)的符號(hào)信息。
[0029]二進(jìn)制控制流分析模塊:用于對(duì)二進(jìn)制的控制流分析,生成地址表信息。
[0030]其中,二進(jìn)制執(zhí)行監(jiān)控模塊包括如下模塊:
[0031]執(zhí)行初始化模塊:用于執(zhí)行前初始化準(zhǔn)備工作,如初始化運(yùn)行裝置中的地址表信息、監(jiān)控程序等等。
[0032]監(jiān)控程序執(zhí)行模塊:用于對(duì)被測(cè)二進(jìn)制軟件的關(guān)鍵點(diǎn)監(jiān)控,并記錄。
[0033]本發(fā)明二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)的測(cè)試方法包括以下步驟:
[0034]步驟一:通過二進(jìn)制分析模塊,分析出二進(jìn)制碼的控制流結(jié)構(gòu),并產(chǎn)生地址表;步驟一之前,通過仿真器連接好目標(biāo)運(yùn)行平臺(tái),搭建好硬件測(cè)試環(huán)境,以便被測(cè)二進(jìn)制碼程序可被下載運(yùn)行。下面舉出具體的一個(gè)例子,如下:通過二進(jìn)制分析方法,產(chǎn)生測(cè)試軟件的二進(jìn)制碼控制流結(jié)構(gòu)和地址表;選擇被測(cè)二進(jìn)制程序碼,指定本程序運(yùn)行的平臺(tái)處理器類型和采用的仿真器類型;基于處理器類型反匯編二進(jìn)制碼,分析出二進(jìn)制碼的控制流信息;分析出所有控制流上的關(guān)鍵點(diǎn),創(chuàng)建地址信息表。
[0035]步驟二:基于JTAG調(diào)試手段初始化被測(cè)程序,在地址表中的關(guān)鍵點(diǎn)添加監(jiān)控點(diǎn);啟動(dòng)監(jiān)控程序運(yùn)行;具體如下:下載二進(jìn)制目標(biāo)碼到運(yùn)行平臺(tái)、設(shè)置斷點(diǎn)等?;谔卣鞯刂繁硇畔?,采用硬件裝置添加監(jiān)控點(diǎn),下載監(jiān)控程序。
[0036]步驟三:監(jiān)控程序是否觸發(fā)到監(jiān)控點(diǎn),若觸發(fā)則記錄監(jiān)控點(diǎn),否則繼續(xù)運(yùn)行直到停止被測(cè)程序運(yùn)行;具體如下:記錄當(dāng)前特征點(diǎn)執(zhí)行狀態(tài),恢復(fù)繼續(xù)執(zhí)行被測(cè)程序。
[0037]步驟四:分析執(zhí)行過的監(jiān)控點(diǎn),統(tǒng)計(jì)二進(jìn)制碼的覆蓋率信息。通過所有特征點(diǎn)的執(zhí)行狀態(tài)信息,計(jì)算所有控制流上的執(zhí)行情況,基于用戶給定的地址范圍計(jì)算覆蓋率。
[0038]以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述特定實(shí)施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實(shí)質(zhì)內(nèi)容。
【主權(quán)項(xiàng)】
1.一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng),其特征在于,包括: 二進(jìn)制分析模塊,用于對(duì)被測(cè)二進(jìn)制碼的所有靜態(tài)分析; 二進(jìn)制執(zhí)行監(jiān)控模塊,用于執(zhí)行被測(cè)二進(jìn)制碼、監(jiān)控執(zhí)行路徑; 覆蓋率統(tǒng)計(jì)分析模塊,用于對(duì)被測(cè)二進(jìn)制碼執(zhí)行的覆蓋率分析。
2.根據(jù)權(quán)利要求1所述的二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng),其特征在于,所述二進(jìn)制分析模塊包括如下模塊: 符號(hào)解析模塊:用于分析二進(jìn)制關(guān)聯(lián)的符號(hào)信息; 二進(jìn)制控制流分析模塊:用于對(duì)二進(jìn)制的控制流分析,生成地址表信息。
3.根據(jù)權(quán)利要求1所述的二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng),其特征在于,所述二進(jìn)制執(zhí)行監(jiān)控模塊包括如下模塊: 執(zhí)行初始化模塊:用于執(zhí)行前初始化準(zhǔn)備工作; 監(jiān)控程序執(zhí)行模塊:用于對(duì)被測(cè)二進(jìn)制軟件的關(guān)鍵點(diǎn)監(jiān)控,并記錄。
4.一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)的測(cè)試方法,其特征在于,包括以下步驟: 步驟一:通過二進(jìn)制分析模塊,分析出二進(jìn)制碼的控制流結(jié)構(gòu),并產(chǎn)生地址表; 步驟二:基于JTAG調(diào)試手段初始化被測(cè)程序,在地址表中的關(guān)鍵點(diǎn)添加監(jiān)控點(diǎn);啟動(dòng)監(jiān)控程序運(yùn)行; 步驟三:監(jiān)控程序是否觸發(fā)到監(jiān)控點(diǎn),若觸發(fā)則記錄監(jiān)控點(diǎn),否則繼續(xù)運(yùn)行直到停止被測(cè)程序運(yùn)行; 步驟四:分析執(zhí)行過的監(jiān)控點(diǎn),統(tǒng)計(jì)二進(jìn)制碼的覆蓋率信息。
【專利摘要】本發(fā)明提供了一種二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)及其測(cè)試方法,二進(jìn)制碼覆蓋率的測(cè)試系統(tǒng)包括:二進(jìn)制分析模塊,用于對(duì)被測(cè)二進(jìn)制碼的所有靜態(tài)分析;二進(jìn)制執(zhí)行監(jiān)控模塊,用于執(zhí)行被測(cè)二進(jìn)制碼、監(jiān)控執(zhí)行路徑;覆蓋率統(tǒng)計(jì)分析模塊,用于對(duì)被測(cè)二進(jìn)制碼執(zhí)行的覆蓋率分析。本發(fā)明可以在盡可能的前提下減少對(duì)被測(cè)程序的實(shí)時(shí)性影響。
【IPC分類】G06F11-36
【公開號(hào)】CN104657264
【申請(qǐng)?zhí)枴緾N201510070390
【發(fā)明人】張必勇, 王偉, 孔祥雷
【申請(qǐng)人】上海創(chuàng)景計(jì)算機(jī)系統(tǒng)有限公司
【公開日】2015年5月27日
【申請(qǐng)日】2015年2月10日