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

下載本文檔

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

文檔簡介

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

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

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

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

溫馨提示

  • 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

提交評論