九個技巧:java
最先開始用eclipse的debug的時候,只會F5 F6 F7 F8,甚至F7都不是很搞的明白是怎麼用的,那時候資淺,碰不到須要複雜debug的代碼,慢慢工做深刻了,場景碰多了,就須要各類debug技巧來提高定位bug效率,之前找人幫忙排查問題,看他開各類窗口debug各類溜甚是羨慕嫉妒恨,慢慢久病成醫本身也用溜了eclipse的一些主要的debug技巧。稍做整理分享出來。web
F5678這四個基本技能就略過不說了,可是最基本的技能能解決90%問題,因此雖然略過不說 ,可是必須用的很溜,相信園友達人們這四個確定比我用的溜的多。express
1. 邏輯結構windows
邏輯結構主要用來展現map之類的collection數據結構存儲的值的,它只展現存儲值的邏輯部分,而屏蔽了數據結構詳細的內部結構,更方便咱們查看map之類collection結構裏存儲的值,推薦使用。服務器
這個按鈕就是展現邏輯結構的按鈕,下面兩個圖,上圖是不展現邏輯結構,下圖是展現邏輯結構,很明顯,下圖的結構可讀性更強,能夠專一於debug的變量。數據結構
2. 條件debugapp
條件debug用在須要知足某種條件纔會觸發斷點的場景,好比只有id是12345這條記錄會有問題,那就當id等於12345時才觸發斷點,其餘都放過。eclipse
右擊斷點選擇斷點屬性,就能看到這樣一個配置框,右邊的文本區塊能夠填寫條件代碼,好比id==12345,因爲每次都要作這個判斷,若是循環數很大的話,仍是有點點慢的,你能夠去上個廁所接個水啊什麼的,仍是很方便的。jvm
3. 異常斷點ui
異常斷點只要用在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了,以下圖: