动态

详情 返回 返回

如果你也會這樣調試,那真是泰酷辣 - 动态 详情

一、引言

工欲善其事,必先利其器,學會如何利用 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 異常斷點

全局異常斷點,會自動斷點到我們出現異常的地方,具體操作可見圖:

圖片

作者:有清

原文鏈接

本文為阿里雲原創內容,未經允許不得轉載。

user avatar chengdumeiyouni 头像 aijianshendexuegao 头像 nocobase 头像 zbooksea 头像 cloudace 头像 240cgxo4 头像 dblens_com 头像 pulangte 头像 xiaoyi_ces 头像 ticktank 头像 menglihuaxiangbian 头像 taozi_60b0b3c71b1a8 头像
点赞 18 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.