目錄
1、進入方式:右上角點擊添加框,選擇“臭蟲”,再點擊小蟲。
2、debug調試下的一些常用一些透視圖,如果沒有自行添加,windows--->show view--->others--->選擇相應的透視圖,這些視圖後面調試時都會用到,沒有的按上面的操作添加。
3、視圖簡介:(稍微看看就好,重點結合後面的調試過程上手調試,然後觀察每個透視圖窗口的內容)
4、debug調試功能鍵詳解(debug調試中最重要的幾個功能鍵,一定記住的快捷鍵:F5/F6/F7/F8),可以先只看F5/F6/F7/F8,其餘的結合後面的調試過程細緻看,上手調試就很容易理解了。
5、類斷點(10%):實際項目中根本就不用,類加載不完全,項目啓動不起來,還怎麼debug.
(我這裏的調試時一個Java Web的項目,簡單的java應用程序調試參看後面文章)
打斷點:(快捷鍵:光標定位某一行,ctrl+shift+b)這裏設置了三類斷點
四、相關快捷鍵:(提升開發及debug效率,建議讀者可以記下)
一、debug透視圖:
1、進入方式:右上角點擊添加框,選擇“臭蟲”,再點擊小蟲。
2、debug調試下的一些常用一些透視圖,如果沒有自行添加,windows--->show view--->others--->選擇相應的透視圖,這些視圖後面調試時都會用到,沒有的按上面的操作添加。
3、視圖簡介:(稍微看看就好,重點結合後面的調試過程上手調試,然後觀察每個透視圖窗口的內容)
4、debug調試功能鍵詳解(debug調試中最重要的幾個功能鍵,一定記住的快捷鍵:F5/F6/F7/F8),可以先只看F5/F6/F7/F8,其餘的結合後面的調試過程細緻看,上手調試就很容易理解了。
5、數據查看:(該部分建議結合接下來的debug過程結合來看,不然看了也白看,前兩個用的比較多一點,前提時調試經過變量所在行,然後快捷鍵纔有效,具體調試的時候查看數據可以在Variables透視圖裏去查看,調試經過的行所涉及的變量均顯示在該視圖中)。
二、斷點類型(括號中爲使用頻率):
1、行斷點:(100%)
在方法中的某一行上打斷點,行斷點可以設置掛起線程/VM的條件,訪問次數。
對於命中次數(hit count)的使用,一般是在循環中,第N個對象的處理有問題,設置hit count = N, 重調試時,可以方便到達需要調試的循環次數時,停下來調試。
2、方法斷點:(70%)
在方法上打斷點,方法斷點的好處是可以從方法方法進入或者退出時,停下來調試,類似行斷點,而且只有行斷點和方法斷點有條件和訪問次數的設置功能。但是方法斷點還有另外一個好處,如果代碼編譯時,指定不攜帶調試信息,行斷點是不起作用的,只能打方法斷點。
有興趣的可以通過window--preferences---java---compiler將Add line number… 前的勾去掉, 調試下看看。
3、觀察斷點(70%):
在成員變量上打的斷點。只有實例成員變量有效果,類成員變量不起作用。
可以設置變量被訪問或者設置的時候掛起線程/VM ,也就所有對成員變量的訪問或者設置的方法都會被監控到 。
4、異常斷點(50%):
異常斷點可以通過Breakpoints透視圖的添加,或者點擊日誌信息中輸出的異常類信息添加。
異常斷點,系統發生異常時,在被捕獲異常的拋出位置處或者程序未捕獲的異常拋出處, 掛起線程/VM, 也可以指定是否包括異常的子類也被檢測。
另外除了以上正常設置的異常掛起,從java->debug中可以設置掛起執行,主要有下面兩個:
1、是否在發生全局未捕獲時掛起(suspend execution on uncaught exceptions),調試時,老是有異常掛起影響調試,但是沒有設置異常斷點的情況,就可以勾選掉這個選項;eclipse默認是勾選這個的。
2、是否在編譯錯誤時掛起,一般在邊調試邊改代碼時會發生這種情況;
5、類斷點(10%):實際項目中根本就不用,類加載不完全,項目啓動不起來,還怎麼debug.
在類名上打的斷點。接口上是打不了類加載斷點的,但是抽象類是可以的,只是在調試的時候,斷點不會明顯進入classloader中,單步進入只會進入到子類的構造方法中,非抽象類在掛起線程後單步進入就會到classloader中(如果沒有filter過濾掉的話)。類加載斷點不管是打在抽象或者非抽象類上,都會在類第一次加載或者第一個子類第一次被加載時,掛起線程/VM。
三、debug過程:
(我這裏的調試時一個Java Web的項目,簡單的java應用程序調試參看後面文章)
1、設置斷點:
打斷點:(快捷鍵:光標定位某一行,ctrl+shift+b)這裏設置了三類斷點
[ps:忽略所有斷點:(快捷鍵:Ctrl+Alt+b)]
2、啓動tomcat 開始debug調試:
3、post請求:
4、逐步調試:
四、相關快捷鍵:(提升開發及debug效率,建議讀者可以記下)
功能 | 快捷鍵 | 說明 |
quick type hierarchy | ctrl+t | 查看當前類、接口的繼承層次, 默認進入時,顯示繼承/實現當前類/方法的子類,子接口;再次ctrl+t,將顯示當前類、接口繼承/實現的超類/接口;調試時,經常用該功能,在接口或抽象類的方法調用處,ctrl+t察看實現類,直接導航到對應的實現方法中。 |
quick outline | ctrl+o | 查看當前類的大綱,包括方法,屬性等內容; 用處不大; |
open declarations | F3 | 查看變量、屬性、方法定義的地方 |
功能 | 快捷鍵 |
說明 |
open call hierarchy | ctrl+alt+h | 查看方法被調用層次, 可以看當前方法被調用的地方,或者當前方法調用了其他類的方法 |
功能 | 快捷鍵 | 說明 |
open type hierarchy | F4 | 查看繼承層次, 可以查看類的繼承層次,包括子類父類, 或者類實現的接口繼承層次,還會根據選擇的類/接口,在右邊顯示該類的大綱; 可以選擇是否顯示父類/父接口的屬性、方法等 |
功能 | 快捷鍵 | 說明 |
declarations | ctrl+g | 相同的方法簽名在工作空間中及第三方jar包中被定義的位置 |
references | ctrl+shif+g | 當前選中的變量、屬性、方法在工作空間中及第三方jar包中被引用的位置 |
ctrl+shift+u | 查看變量、屬性 、方法在當前類中出現的地方 |
參考博文: