一、引言
工欲善其事,必先利其器,學會如何利用 IDEA 高效 debug ,將會大大提升我們的工作效率。基本的斷點調試方式就不講解了,網上有很多優秀的文章,這裏會主要舉一些我們日常工作中重要但是容易被忽視的調試技巧。
二、正文
2.1 不暫停的 debug
通常情況下,我們斷點的時候,會卡住當前線程。假設我們在主預發或者公用環境進行debug,就老感覺背後有人在罵我,誰又在debug,環境怎麼又不通了!所以當我們想要愉快在公用環境debug的時候要:
查看變量值
不暫停直接觀察相關變量值
強行改變變量值
是誰調用了我
可以直接觀察到調用堆棧,類似 Arthas 的 trace
你進來了不
如果執行了斷點所在位置,會在控制檯打出一行日誌:
2.2 快速執行表達式
我們通常在調試的時候,利用 Evaluate Expression...(option + F8),可以進行我們的表達式執行。
有一定開發經驗的小夥伴肯定使用過這個功能,因爲在工作中,這個調試技巧使用的頻率還蠻高的,我們可以利用快捷鍵高效調試,例如下圖:
快捷鍵:alt + d 喚起執行窗口 -> option + F9 定位光標處 -> option + command + f8 快速執行表達式
2.3 調試的時光倒流
有的時候,我們的小夥伴可能心太急,一路迅速 deubg,卻忘記沿途的風景了,這個時候我們就需要利用到 drop frame,具體操作如下圖所示:
2.4 僅調試循環中的一個條件
有的時候,我們只想調試 for 循環中的某個條件,假設我們這個循環有 100 次,其中只有第99次的循環是我們想要的,如果我們一直點點點,點到第99次,那真是有一點痛苦,我們可以這樣:
2.5 誰給變量賦的值?
在我們的項目中,假設有個變量 a,我想知道這個流程中到底是誰給 a 賦過值,結果一反引,幾百處引用,那麼我該如何知道誰在方法中給 a 賦了值,我們只需要在 pojo 對象的 a 字段上打上斷點即可,動圖展示一下:
2.6 這個方法何去何從
在我們的項目中,有個接口 a,但是有無數的類實現了這個接口 a,我想調試到真正執行 a 方法的地方,我該怎麼做?在無數實現類中 debug 嗎?我們可以將斷點打在這個接口 a 方法上(當然,這個將會使你的 debug 變慢)。
2.7 斷點執行至光標處
我們當前斷點停止在第 5 行,假設我們想斷點調試第 12 行,一般來說,我們在 12 行斷點,然後直接往下走即可:
但其實我們可以這樣:
直接 Run to Cursor (強烈建議快捷鍵操作,更加絲滑 option + F9),就可以直接斷點到我們的 12 行。
2.8 異常斷點
全局異常斷點,會自動斷點到我們出現異常的地方,具體操作可見圖:
作者:有清
本文爲阿里雲原創內容,未經允許不得轉載。