此文基于對debug有一定基礎
高效斷點
條件斷點
條件成立才會觸發(fā)。
場景:比如一個10次的for循環(huán),調試時想停留在第8次,那么就會用到條件斷點
使用:先在需要的行前左鍵單擊添加普通斷點,右鍵點擊該斷點出現(xiàn)對話框,在“Condition”處填入條件即可,條件語法同 Java,如 i == 8。點擊 Done,完成添加。這樣當條件未滿足時,不會阻塞程序運行;當條件滿足時斷點被觸發(fā)
如圖:

不阻塞應用程序的日志斷點
場景:調試時我們常常有這樣的需求:輸出一些log
使用:常規(guī)的做法是:添加日志代碼,重新運行,觸發(fā)斷點
對于比較龐大的項目而言,這樣做的效率肯定比較低
高效的做法:
在條件斷點彈出的對話框里,將“suspend”設置為未選中狀態(tài),斷點觸發(fā)時就不會被阻塞。此時對話框會多出一些選項
如圖:

異常觸發(fā)的斷點
場景:日常開發(fā)難免碰到一些給出具體信息和拋異常的位置也沒有頭緒或者未給出具體位置的情況,這個時候往往需要我們人為分析,但是這種做法顯然效率不高
使用:此時我們就可以用上異常斷點:
打開斷點管理器,可以看到Java Exception Breakpoints,此項表示所有異常都會被觸發(fā)
如果只想觸發(fā)某種異常可以點擊"+",選中Java Exception Breakpoints,然后輸出該種異常
除了Java Exception Breakpoints還有Exception Breakpoints,前者只支持Java本身的異常,后者支持自定義異常
如圖:

字段斷點和方法斷點
抓住關鍵方法或字段來追蹤應用程序的運行軌跡
字段斷點的觸發(fā)條件是字段值被更改,方法斷點是方法被調用
場景:適用于類似多線程下的復雜場景
使用:在字段那行、在方法聲明的那行單擊即可
如圖:

調試中的變量
Add New Watch
作用:添加一個觀察表達式,在變量觀測區(qū)執(zhí)行一個表達式并得到它的值
使用:在面試左側點擊綠色“+”,或者點擊右鍵在菜單中選擇New Watch, 就會出現(xiàn)一個框,輸入表達式即可
如圖:


Evaluate Expression
計算表達式
作用:可以輸出代碼中表達式的值
使用:
debug狀態(tài)下,右擊選擇Evaluate Expression
如圖:

觀察變量
作用:Evaluate Expression的簡化版
使用:Alt+鼠標左鍵 在變量上面點擊
如圖:

設置變量的值
作用:變量的值除了可以被觀察之外,還可以在運行時改變。此功能在實際調試中特別實用
使用:設置變量的方法:
- 在變量觀測區(qū)右鍵單擊變量,在菜單中選中
set value - 鼠標懸浮在代碼區(qū)中的某個可訪問的變量上,在彈出的浮層里更改值
如圖:

其他
Force Run to Cursor
作用:忽視已經(jīng)存在的斷點,直接跳到光標的所在行,很實用!
Drop frame
作用:只在單元測試(JUnit )下起作用。用在錯過出錯的時刻,可以回到當前的方法被調用的地方,沒錯,時光倒流