IDEA的這幾個除錯的騷操作,用了都說爽!
點選上方“視學演算法”,選擇“星標”公眾號
重磅乾貨,第一時間送達
一、條件斷點
迴圈中經常用到這個技巧,比如:遍歷1個大List的過程中,想讓斷點停在某個特定值。
參考上圖,在斷點的位置,右擊斷點旁邊的小紅點,會出來一個介面,在Condition這裡填入斷點條件即可,這樣除錯時,就會自動停在i=10的位置
最新粉絲福利
二、回到"上一步"
該技巧最適合特別複雜的方法套方法的場景,好不容易跑起來,一不小心手一抖,斷點過去了,想回過頭看看剛才的變數值,如果不知道該技巧,只能再跑一遍。
參考上圖,method1方法呼叫method2,當前斷點的位置j=100,點選上圖紅色箭頭位置的Drop Frame圖示後,時間穿越了
回到了method1剛開始呼叫的時候,變數i變成了99,沒毛病吧,老鐵們,是不是很6 :)
注:好奇心是人類進步的階梯,如果想知道為啥這個功能叫Drop Frame,而不是類似Back To Previous 之類的,可以去翻翻JVM的書,JVM內部以棧幀為單位儲存執行緒的執行狀態,drop frame即扔掉當前執行的棧幀,這樣當前“指標”的位置,就自然到了上一幀的位置。
三、多執行緒除錯
多執行緒同時執行時,誰先執行,誰後執行,完全是看CPU心情的,無法控制先後,執行時可能沒什麼問題,但是除錯時就比較麻煩了,最明顯的就是斷點亂跳,一會兒停這個執行緒,一會兒停在另一個執行緒,比如下圖:
如果想希望下一個斷點位置是第2句詩句,可能要失望了:
如果想讓執行緒在除錯時,想按自己的願意來,讓它停在哪個執行緒就停在哪個執行緒,可以在圖中3個斷點的小紅點上右擊,
即:Suspend掛起的條件是按每個執行緒來,而非All。把這3個斷點都這麼設定後,再來一發試試
注意上圖中的紅框位置,斷點停下來時,這個下拉框可以看到各個執行緒(注:給執行緒起個容易識別的名字是個好習慣!),我們可以選擇執行緒“天空中的飛鳥”
斷點如願停在了第2句詩。
四、遠端除錯
這也是一個裝B的利器,本機不用啟動專案,只要有原始碼,可以在本機直接遠端除錯伺服器上的程式碼,開啟姿勢如下:
1、專案啟動時,先允許遠端除錯
java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}
起作用的就是
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081
注意:遠端除錯從技術上講,就是在本機與遠端建立scoket通訊,所以埠不要衝突,而且本機要允許訪問遠端埠,另外這一段引數,放要在-jar 或 ${main_class}的前面
2、idea中設定遠端除錯
然後就可以除錯了
前提是本機有專案的原始碼 ,在需要的地方打個斷點,然後訪問一個遠端的url試試,斷點就會停下來。
五、臨時執行表示式/修改變數的執行值
除錯時,可以臨時執行一些表示式,參考下圖:點選這二個圖示中的任何1個都可以
點選+號後,就可以在新出現的輸入框裡輸入表示式,比如i+5
然後回車,馬上就能看到結果
當然,如果除錯時,想動態修改變數的值,也很容易,在變數上右擊,然後選擇Set Value,剩下的事,地球人都知道。
善用上述除錯技巧,相當大家擼起程式碼來會更有感覺。
來源:https://dwz.cn/zMaNp9Kf
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- 使用解構的幾個騷操作
- Chrome DevTools中的這些騷操作,你都知道嗎?Chromedev
- Vue還有這種騷操作?淺析幾個新手常常忽略的APIVueAPI
- 提高 Java 效率的 35 個小技巧,用了的都說好!Java
- [IDE][IDEA]教你一些IDEA比較騷的操作Idea
- Python的十七個騷操作,你都學會了嗎?(上)Python
- React中的這個TS騷操作秀到我了React
- [C#.NET 拾遺補漏]05:操作符的幾個騷操作C#
- 推薦幾個不錯的console除錯技巧除錯
- 「IDEA外掛精選」安利一個IDEA騷操作:一鍵生成方法的序列圖Idea
- idea除錯按鈕的作用Idea除錯
- 聽說優秀的Web前端開發工程師都會用這幾個工具!Web前端工程師
- K專案的一些心得之全球模板裡的幾個騷操作
- [譯] GitHub 上的 12 個騷操作Github
- 老司機常用的幾個JavaScript除錯技巧JavaScript除錯
- 儲存卡誤刪都能恢復嗎?這個方法大家用了都說好
- 盤點 Python 高手都寫不出來的幾個錯誤Python
- Python裡的17個“騷操作”好玩有趣Python
- IDEA的debug除錯--基礎小白篇Idea除錯
- 這幾個好用的Python開源框架,你都知道嗎?Python框架
- Flutter 之 AppBar 這樣的騷操作你知道嗎?FlutterAPP
- 這些 JS 中強大的操作符,總有幾個你沒聽說過JS
- python基礎(補充):lambda匿名函式,用了的,都說好!Python函式
- make:migration 的騷操作
- &引用上的騷操作
- Python中的三個”黑魔法“與”騷操作“Python
- 聽說這四個概念,很多 Java 老手都說不清Java
- Java8的這些集合騷操作,你掌握了嘛?Java
- Idea沒安裝幾款好用的外掛,怎麼風騷的寫程式碼???Idea
- IDEA、ECLIPSE遠端除錯IdeaEclipse除錯
- 這些Python騷操作,你知道嗎?Python
- 原始碼都沒除錯過,怎麼能說熟悉 redis 呢?原始碼除錯Redis
- 聊一聊 GDB 除錯程式時的幾個實用命令除錯
- Fragment跳轉的騷操作Fragment
- markdown的騷氣操作(一)
- 聊聊那些年的騷操作!!!
- 還在用Calendar操作Date?Java8都棄用了,還不知道它的這款強大的工具嗎?Java
- 使用IDEA遠端debug除錯Idea除錯