1. 程式人生 > >eclipse除錯java程式的九個技巧

eclipse除錯java程式的九個技巧

九個技巧:

  1. 邏輯結構
  2. 條件debug
  3. 異常斷點
  4. 單步過濾
  5. 跳到幀
  6. Inspect
  7. expressions
  8. display
  9. 遠端debug

 

  最早開始用eclipse的debug的時候,只會F5 F6 F7 F8,甚至F7都不是很搞的明白是怎麼用的,那時候資淺,碰不到需要複雜debug的程式碼,慢慢工作深入了,場景碰多了,就需要各種debug技巧來提升定位bug效率,以前找人幫忙排查問題,看他開各種視窗debug各種溜甚是羨慕嫉妒恨,慢慢久病成醫自己也用溜了eclipse的一些主要的debug技巧。稍作整理分享出來。

  F5678這四個基本技能就略過不說了,但是最基本的技能能解決90%問題,所以雖然略過不說 ,但是必須用的很溜,相信園友達人們這四個肯定比我用的溜的多。

1. 邏輯結構

邏輯結構主要用來展示map之類的collection資料結構儲存的值的,它只展示儲存值的邏輯部分,而遮蔽了資料結構詳細的內部結構,更方便我們檢視map之類collection結構裡儲存的值,推薦使用。

這個按鈕就是展示邏輯結構的按鈕,下面兩個圖,上圖是不展示邏輯結構,下圖是展示邏輯結構,很明顯,下圖的結構可讀性更強,可以專注於debug的變數。

 

2. 條件debug

條件debug用在需要滿足某種條件才會觸發斷點的場景,比如只有id是12345這條記錄會有問題,那就當id等於12345時才觸發斷點,其他都放過。

右擊斷點選擇斷點屬性,就能看到這樣一個配置框,右邊的文字區塊可以填寫條件程式碼,比如id==12345,由於每次都要做這個判斷,如果迴圈數很大的話,還是有點點慢的,你可以去上個廁所接個水啊什麼的,還是很方便的。

 

 

3. 異常斷點

異常斷點只要用在debug某種異常的時候,可以配置當這個異常出現後才觸發斷點,不需要debug去尋找異常。

點選這個紅圈就能彈出異常斷點的視窗,會列出你係統裡的所有異常類,然後選擇需要斷點的異常就OK。

 

 

4. 單步過濾

單步過濾的場景是我們在使用F5來跟到某個方法內部的時候,經常會跟到一些我們確定不需要看的方法內部。

this.getTradeDetail(uid, itemStr.subString(0,5))

比如這行程式碼,想F5進入getTradeDetail內部,會首先執行itemStr.subString方法,會先進入subString方法,而這方法是jdk的String方法,確定沒問題,不需要關心,單步過濾就是跳過這些我們想忽略的方法直接到目標方法內部的一種debug技巧。

Window > PreferencesJava > Debug > Step Filtering 設定過濾器, 可以選擇需要過濾掉的包和類。同時要確保你在debug檢視中啟用了單步過濾,如下圖。這樣在使用單步除錯的時候,就會使用到這個過濾功能。

上圖是過濾器配置,典型的就是把jdk的一些類和包配置過濾。下圖是要在debug時候開啟單步過濾,否則不生效。

 

 

 

 

5. 跳到幀

跳到幀是一種重入技巧,在debug時,eclipse可以直接跳到呼叫棧中指定的任意楨,並且使JVM在此處重新執行。這使你可以重新執行你的部分程式碼,而不需要為了除錯之前的程式碼而重新來一次。

要注意的是:已經被修改的變數不會被重置,它們會保留當時的值。

使用方式:選擇呼叫棧中的一楨,點選按鈕“跳到楨”

6. Inspect

inspect用來檢視某個表示式的之,對於變數值debug很容檢視,但是對於一個表示式的值就不容易檢視,還是這句:

this.getTradeDetail(uid, itemStr.subString(0,5))

想看getTradeDetail的值,就沒法想看變數值一樣(雖然這個很有可能是賦值給一個變數...),要看這種表示式值,就需要inspect,具體做法是選中這行表示式,然後右擊->inspect,或者更方便的快捷鍵組合:ctrl+shift+i,會彈出如下的展示表示式結果的框:

7. expressions

expressions視窗也是用來看變數或者表示式的值的,在windows->show viewz中開啟expression視窗,然後在裡面新增你想觀察的表示式,比如還是這句:

this.getTradeDetail(uid, itemStr.subString(0,5))

然後debug的時候,就能看到被新增的表示式結果了,另外也能根據需要改value的值。

8. display

display也是用來觀察和修改變數or表示式的,這個應該用的人比較多,在windows->show viewz中開啟display視窗,可以在display窗口裡寫表示式,然後右擊選擇display執行檢視結果或者ctrl+shift+D快捷鍵組合,表示式可以是程式中一行程式碼或者你自己寫的一個賦值語句來改變變數值之類的。

 

9. 遠端debug

遠端debug可以用來除錯遠端伺服器上的程式碼,保證你原生代碼和遠端部署的程式碼是一致,就可以通過這種方式debug伺服器程式碼,這個是java web開發的一大利器,否則定位伺服器問題簡直是災難。

遠端debug需要伺服器端啟動jvm的時候做一些開啟和埠的配置,具體的配置網上很多,搜一下即可。然後在本地的debug configuration中雙擊新增一個remote java application,填寫遠端主機的host和配置的debug埠,就可以開始debug了,如下圖: