Java多線程調試工具的研究與開發(fā).pdf_第1頁
已閱讀1頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、如今,多核處理器發(fā)展迅猛,促使多線程的應用越來越廣泛。多線程程序雖然提高了運行速度和資源利用率,但是程序中極易含有并發(fā)錯誤?,F(xiàn)有的針對多線程程序的研究或工具主要集中在并發(fā)錯誤的檢測上。然而,無論是工具檢測出的錯誤還是錯誤報告中用戶提交的錯誤,被發(fā)現(xiàn)后都需要程序員參與調試。
  調試是軟件開發(fā)過程中不可或缺的一個重要環(huán)節(jié)。對于單線程程序而言,程序員可以通過設置斷點或者輸出日志等方式進行調試。而對多線程程序而言,這些方式都不再適用,由

2、于線程的調度由調度器決定,存在著調度的不確定性,故而不同的線程調度可能產(chǎn)生不同的結果,這給多線程程序的調試帶來了很大困難。因此,程序員對于可靠的多線程程序的調試技術的需求越來越迫切。為調試多線程程序,最重要的在于控制程序執(zhí)行時多線程的調度,即在程序中插入控制代碼。最初,程序員會在源代碼中添加Thread.sleep(),這仍然是目前使用最為廣泛的控制調度的方式之一。有時候,程序員也會通過在源代碼中添加Object.wait()/noti

3、fy()這樣的代碼以達到控制線程調度的目的。然而,這兩種方式都存在弊端,容易造成錯誤的誤報或者漏報。近些年,研究者提出了如ConAn、MultithreadedTC、IMunit等這類測試框架,但它們并不易于程序員使用,并且隨著多線程程序的錯誤越來越復雜,現(xiàn)有的技術已經(jīng)不能滿足程序員的調試需求。
  本研究對實際項目中發(fā)生的多線程錯誤進行了分析,總結出四種程序員可能面臨的多線程程序調試場景:基于行的一般性線程切換、控制邏輯運算符間

4、的線程切換、控制函數(shù)調用鏈間的線程切換、以及控制循環(huán)相關的線程切換。為了幫助程序員對這四類多線程程序進行調試,本文定義了順序點這一概念,以及需要滿足的調度約束,提出了基于順序點的調試技術,并設計了針對多線程程序調試場景的領域特定語言。本研究采用了字節(jié)碼層面而非源代碼層面的代碼插樁技術,從而達到讓線程按照期望的順序調度的目的,并且對線程的調度控制更加靈活和精準。
  基于上述方法,本研究最終實現(xiàn)了一個Eclipse上的調試插件,利用

溫馨提示

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

評論

0/150

提交評論