Debug模式调试技巧
Debug模式調試技巧
斷點管理窗口
菜單欄方式
Run -> view breakpoints
Actions方式
雙擊shift調出Actions窗口,輸入view breakpoints即可打開
任意斷點處鼠標右鍵
選擇more即可打開管理窗口
快捷鍵
Ctrl + Shift + F8
操作面板
調試按鈕
Show Execution Point
回到當前激活的斷點處。效果:若你鼠標現在在別的頁面/別的類上面,點擊它快速“歸位”
Step Over
也叫單步調試,一行一行往下走,若這一行是方法也不會進入里面去。這個應該是平時使用得最多的按鈕了,沒有之一。所以,建議記住你的快捷鍵來提高效率哈
Step Into
進入方法體內部。這里的方法指的你自定義的方法or三方庫的方法,不會進入到JDK官方的方法里(如上面的System.out.println()這種它是不會進去的)
Force Step Into強制步入
能進入任何方法,包括JDK的。一般查看底層源碼才會用到它
Step Out步出
它是搭配(Force) Step Into一起使用的,當通過step into進入到方法體內部想出來時,一般有兩種方案:單步調試慢慢出來,另一個就是step out(推薦)
Drop frame
回到當前方法的調用處,同時上下文內所有的變量的值也回到那個時候。該按鈕能夠點擊的前提條件是:當前所處的方法有上級方法,如果你是main方法里,那么按鈕就是灰色嘍
Run to Cursor
你想要代碼在哪里停一下,就把光標放在哪就成。這個功能實在太好用了,大大緩解了密密麻麻的斷點,強烈推薦
Evaluate Expression
表達式計算器,你可以在這里執行任何合法的表達式
方法調用棧
顯示當前方法(位于棧頂)所經過的所有方法。
說明:點擊右上角的小漏斗圖標可以不顯示類庫的方法,只顯示你自己寫的方法,方便調試
變量區Variables
Watches變量跟蹤
有的時候變量很多,而只需要重點關注某幾個變量,就可以使用Watches。
為何調試窗口沒自動打開?
明明斷點激活了(程序暫停了),但是那個“操作面板”并沒有出來,怎么破?
多線程調試
多線程程序的好處固然不用多說,但總所周知它調試起來是比較困難的,比如這段:
這個時候如果你想研究await()方法的實現,需要具備的前提條件是多個線程進入,因此需要hold住多個線程。若只是在await()這一行打個普通的行斷點,那結果是這樣子的:
所有線程都是Running狀態,顯示這是不可能的,因為總共只有3個另外,拿完了其它的都得等待才對,所以這個根本就不是真實的執行場景,也就不可能跟蹤到await()方法里面去探究其實現。
為了模擬出這種場景進行調試,就對斷點阻塞條件設置為這樣
再次運行程序,線程情況如下:
主動拋出異常
需求場景:你寫了一個全局異常組件,現在想測試它生效情況如何,那么時候你就需要主動拋出這種異常,一般的做法是形如這樣
使用場景
知曉了異常斷點的作用和觸發條件,使用場景就有啦。比如當你的程序拋出了一個異常,但是一時半會你并不知道是哪行代碼引起的,這個時候通過增加異常斷點的方式可以實現迅速的問題定位。
分支主題 10
IDEA把斷點分為四大類型
Line breakpoint(行斷點):圖中紅色小圓圈。顧名思義,在指定代碼行設置斷點
Field watchpoint(屬性斷點):圖中紅色小眼睛。打在類的屬性(static or 非static)上的斷點,作用是在該屬性 讀取和寫入時激活
Method breakpoint(方法斷點):圖中紅色小菱形。標記在方法簽名的那一行,在該方法執行的入口/出口處被激活
Exception breakpoint(異常斷點):紅色小閃電。這是一個特殊但很好用的斷點,當程序拋出 指定異常時會激活異常斷點。和其它斷點不同,異常斷點是項目 全局的,它不需要打在具體某一行上
轉自:https://my.oschina.net/fangshixiang/blog/4941380
總結
以上是生活随笔為你收集整理的Debug模式调试技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优酷路由宝怎么赚钱优酷土豆路由器如何赚钱
- 下一篇: 格兰仕微波炉手册哪里下载格兰仕微波炉手册