http://blog.jobbole.com/93421/
一、Eclipse調試介紹
二、Eclipse中和Debug相關的視圖 2.1 Debug View 2.2 Variables View 2.3 Breakpoints View 2.4 Expressions View 2.5 Display View
三、Debug
3.1 設定斷點
3.2 偵錯工具
3.2.1 調試本地 Java 語言程式
3.3.2 遠端偵錯 一、Eclipse調試介紹
使用過Eclipse的人都知道,Eclipse都是內建Java調試器的,可以提供很多基本的調試功能。 Eclipse 平台工作台及其工具是圍繞 JDT 組件構建的,該組件為 Eclipse 提供了下列特性:
專案管理工具 透視圖和視圖 構造器、編輯器、搜尋和構建功能 調試器 二、Eclipse中和Debug相關的視圖
圖 1. Eclipse Debug 透視圖的一般視圖(該視圖可以在Eclipse介面的右上方位置點擊Debug按鈕進入)
Debug View:
Debug視圖允許您在工作台上管理正在調試和啟動並執行程式,他顯示了你正在調試的程式中掛起的線程的堆疊框架,程式中的每個線程作為樹的節點出現。他展示了正在啟動並執行每個目標的進程。如果線程被掛起,它的堆疊框架以子項目的形式展示。以下是一些常用的debug按鈕:
Skip All Breakpoints::將所有斷點設定為被跳過的,設定了Skip All Breakpoints之後,所有斷點上都會有一個斜線,表示斷點將被跳過,線程不會在該斷點處被掛起。
Drop to Frame:這個命令可以讓程式回到當前方法的開頭第一行重新開始執行,可以重新執行這個java堆疊框架,可以選擇一個指定的堆疊框架,然後點擊 Drop to Frame,這樣就可以重新進入指定的堆疊框架。使用Drop to Frame時候需要注意:
1.不能drop到已經執行過的方法棧中的方法中。
2.drop到stack frame中時,不會改變全域資料原有的值,比如,一個包含元素的vertor並不會被清空。
Step Filters:這個功能比較簡單,就是當我們在debug的時候想要忽略一些我們不關注的類時,可以開啟Step Filters進行過濾,程式會一直執行直到遇到未經過濾的位置或斷點。Step Filters功能由Use Step Filters,Edit Step Filters,Filter Type,Filter Package四項組成。具體操作如下:
步驟 1: Windows -> Preferences -> Java -> Debug -> Step Filtering.
步驟 2:選擇‘Use Step Filters’.
步驟 3:在螢幕上選中所需的選項。你可以添加你自己程式碼程式庫中的部分代碼。
步驟 4:點擊‘Apply’.
原理上,Edit Step Filter命令用於配置Step Filter規則,而Filter Type與Filter Package分別指的是過濾的Java類型與Java Package。
Step Return:跳出當前方法,在被呼叫者法的執行過程中,使用Step Return會在執行完當前方法的全部代碼後跳出該方法返回到調用該方法的方法中。
Step Over:在逐步執行時,在函數內遇到子函數時不會進入子函數內逐步執行,而是將子函數整個執行完在停止,也就是把子函數整個作為一步。
Step Into:逐步執行,遇到子函數就進入並且繼續逐步執行
Resume:恢複暫停線程,直接從當前位置跳到下一個斷點位置。
Suspend:暫停選定的線程,這個時候可以進行瀏覽或者修改代碼,檢查資料等。
Eclipse通過Suspend與Resume來支援線程的暫掛與恢複。一般來講,Suspend適用於多線程程式的調試,當需要查看某一個線程的堆疊框架及變數值時,我們可以通過Suspend命令將該線程暫掛。Resume用於恢複。有兩種Resume需要注意:第一是當在調試過程中修改程式碼,然後儲存,點擊Resume,此時程式會暫掛於斷點。第二是當程式拋出異常時,運行Resume,程式也會暫掛於斷點。
Terminate:Eclipse通過Terminate命令終止對本地程式的調試。
Disconnect:Eclipse使用Disconnect命令來終止與遠程JVM的socket串連。 Variables View :
Variables View顯示與Debug View中選定的堆疊框架相關的變數資訊,調試Java程式時,變數可以選擇將更詳細的資訊顯示在詳細資料窗格中。此外,Java對象還可以顯示出其包含的屬性的值。在該視窗中選中變數滑鼠右鍵點擊可以進行許多操作,主要操作有以下這些:
All Instances:開啟一個對話方塊來顯示該java類的所有執行個體,使用該功能需要java虛擬機器支援執行個體的檢索。
All References::開啟一個對話方塊來顯示所有引用了該變數的java對象,
Change Value::更改變數的值,該功能可以和Drop to Frame聯合使用進行程式的調試。使用這兩個功能就可以代替重新debug
Copy Variables:複製變數的值,尤其在變數值很長(比如json資料)的時候,這個功能就派上用場了。
Find:有的時候一個類中變數特別多的時候,可以進行尋找。 Breakpoints View :
Breakpoints View將列出你在當前工作區間裡設定的所有斷點,雙擊斷點可以進入到程式中該斷點的位置。還可以啟用或禁用斷點,刪除,添加新的,根據工作群組或點命中計數給他們分組。在使用斷點是有以下兩個技巧是十分有用的:
Hit Count: 是指定斷點處的程式碼片段運行多少次,最典型的就是迴圈,如果要讓一個迴圈執行10次就線程掛起,則指定Hit Count值為10,那麼當前的迴圈執行到第九次的時候就會掛掉。
Conditional:顧名思義,就是條件判斷,例如我們需要迴圈變數i==10時,線程掛起,則條件設定為i==10,選擇Suspend when “true”。
那如果上面的Hit Count和Conditional都選擇的話,如果運算式和值設定不合理則會失效。如果選擇Suspend when value changes,那麼可能在Conditional在變數值發生改變的時候就掛起。