基于機(jī)器學(xué)習(xí)和程序分析相結(jié)合的程序調(diào)試技術(shù)研究.pdf_第1頁
已閱讀1頁,還剩165頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、如何提高程序正確性是軟件工程領(lǐng)域的一個核心問題。由于軟件系統(tǒng)的復(fù)雜性以及程序缺陷的多樣性,尚不存在普適的方法能保證程序絕對正確。一旦缺陷在程序運(yùn)行中引發(fā)故障,則需要通過程序調(diào)試定位并修復(fù)缺陷。實際的程序調(diào)試需要大量人工參與,以交互和迭代的方式進(jìn)行,其開銷約占軟件開發(fā)和維護(hù)成本的50%以上。因此,提高程序調(diào)試的效率有助于提升程序正確性,并能顯著降低軟件開發(fā)和維護(hù)成本。
   鑒于程序調(diào)試的重要性,針對當(dāng)前調(diào)試技術(shù)效率低下的問題,本

2、文以提高程序調(diào)試技術(shù)的有效性和實用性作為目標(biāo),著眼于實際的交互式和迭代式調(diào)試場景,以程序分析和機(jī)器學(xué)習(xí)相結(jié)合作為主要途徑,提出一套貫穿整個調(diào)試過程的新型程序調(diào)試技術(shù)。根據(jù)調(diào)試過程各階段的特點,本文重點研究靜態(tài)缺陷檢測、靜態(tài)和動態(tài)程序切片、基于日志和斷點的交互式調(diào)試以及自動代碼推薦等關(guān)鍵問題。
   首先,針對靜態(tài)缺陷檢測誤報率過高的問題,本文提出控制流圖的精化和擴(kuò)展方法,使其能更好支持靜態(tài)警告的篩選和排序,在調(diào)試開始階段為調(diào)試人

3、員提供更準(zhǔn)確的缺陷警告信息。在控制流圖精化方面,本文首次提出利用機(jī)器學(xué)習(xí)發(fā)掘分支關(guān)聯(lián)以探測不可達(dá)路徑的方法。通過程序插裝搜集動態(tài)分支數(shù)據(jù),采用關(guān)聯(lián)規(guī)則學(xué)習(xí)挖掘程序分支的潛在關(guān)聯(lián),并通過評估與潛在分支關(guān)聯(lián)的一致性檢測程序路徑可達(dá)性。該方法無需分析復(fù)雜路徑條件,適用于規(guī)模較大含有復(fù)雜分支謂詞的程序,能探測傳統(tǒng)方法難以探測的不可達(dá)路徑。在控制流圖擴(kuò)展方面,本文主要研究控制流圖概率化。針對現(xiàn)存方法不適用于面向?qū)ο蟪绦蛑械奶摵瘮?shù)調(diào)用的問題,首次提

4、出根據(jù)靜態(tài)程序特征預(yù)測虛函數(shù)動態(tài)調(diào)用頻率的方法——Festival?;谟?xùn)練程序集合,F(xiàn)estival一方面提取用于表征程序設(shè)計意圖的特征值,另一方面獲取虛函數(shù)調(diào)用頻率,基于兩方面數(shù)據(jù)構(gòu)建人工神經(jīng)網(wǎng)絡(luò)模型,刻畫特征值與頻率之間的關(guān)系。對于有待預(yù)測頻率的測試程序,F(xiàn)estival僅需提取其靜態(tài)特征作為模型輸入,模型輸出即為調(diào)用頻率估計值。Festival彌補(bǔ)了現(xiàn)存方法無法應(yīng)用于面向?qū)ο蟪绦虻娜秉c,且無需運(yùn)行待預(yù)測程序,不依賴于輸入數(shù)據(jù)的質(zhì)

5、量,從而有效克服動態(tài)分析方法的共有局限性。
   然后,在輔助交互式調(diào)試方面,本文針對當(dāng)前常用工具(日志和斷點)需消耗大量人力的缺點,提出自動化的分析、改進(jìn)和生成技術(shù)。在日志分析方面,總結(jié)出日志使用的兩個主要問題:1)冗余日志過多和2)關(guān)鍵日志缺失,首次提出從日志文件提取動態(tài)信息與傳統(tǒng)靜態(tài)程序切片相結(jié)合的日志切片技術(shù),并基于日志切片提出日志精化技術(shù)。日志切片可削減冗余日志,同時產(chǎn)生更精簡的程序切片。日志精化自動選擇程序位置插入新

6、日志語句,彌補(bǔ)現(xiàn)有日志中缺失的關(guān)鍵信息。另外,針對程序切片計算復(fù)雜度較高難以應(yīng)用于交互式調(diào)試過程的問題,本文創(chuàng)新性的提出將程序切片過程分為離線和在線兩個階段。離線階段進(jìn)行各類靜態(tài)程序分析并存儲分析結(jié)果,在線階段基于離線分析結(jié)果實時計算程序切片,從而大幅度縮短調(diào)試人員等待時間,使得日志切片可應(yīng)用于交互式調(diào)試。同時,本文采用增量式和需求驅(qū)動式的數(shù)據(jù)流分析算法,確保離線分析結(jié)果與最新程序版本之間的一致性。除日志分析之外,本文結(jié)合最近鄰搜索、動

7、態(tài)程序切片和內(nèi)存圖分析技術(shù),提出斷點自動生成方法,節(jié)省手工設(shè)置斷點的工作量。其中,最近鄰搜索和動態(tài)程序切片用于自動選取斷點設(shè)置位置,而針對特定程序位置選擇特定時機(jī)進(jìn)行內(nèi)存圖分析和生成條件斷點的方法為本文首創(chuàng)。自動生成的斷點能同時提示與缺陷相關(guān)的語句和程序狀態(tài),以調(diào)試人員熟悉的形式提供全面的輔助信息。
   最后,在缺陷修復(fù)方面,提出以實時代碼推薦的形式解決由于程序員對代碼掌握不足所導(dǎo)致的修復(fù)效率低下的問題。本文首次指出API參數(shù)

8、推薦的重要性,并提出基于程序分析和數(shù)據(jù)挖掘相結(jié)合的解決方案——Precise。根據(jù)大規(guī)模實際程序的數(shù)據(jù)分析,提出一組經(jīng)驗性規(guī)則,有效限定候選參數(shù)的搜索空間,使得Precise具備可行性和實用性。通過對訓(xùn)練程序代碼的分析、抽象和轉(zhuǎn)換,Precise預(yù)先構(gòu)建參數(shù)使用實例數(shù)據(jù)庫。針對各個參數(shù)推薦請求,Precise根據(jù)請求上下文,使用最近鄰搜索算法從數(shù)據(jù)庫中獲取相似上下文中的抽象參數(shù)使用模式并進(jìn)行具體化,實時提供具有適應(yīng)性的參數(shù)推薦。選取AP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論