溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IntelliJ IDEA的調(diào)試技巧

發(fā)布時間:2021-08-26 14:37:34 來源:億速云 閱讀:175 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“IntelliJ IDEA的調(diào)試技巧”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!


一、條件斷點  
循環(huán)中經(jīng)常用到這個技巧,比如:遍歷1個大List的過程中,想讓斷點停在某個特定值。
IntelliJ IDEA的調(diào)試技巧  
參考上圖,在斷點的位置,右擊斷點旁邊的小紅點,會出來一個界面,在Condition這里填入斷點條件即可,這樣調(diào)試時,就會自動停在i=10的位置。  
 
 
二、回到"上一步"   
該技巧最適合特別復雜的方法套方法的場景,好不容易跑起來,一不小心手一抖,斷點過去了,想回過頭看看剛才的變量值,如果不知道該技巧,只能再跑一遍。
IntelliJ IDEA的調(diào)試技巧  
參考上圖,method1方法調(diào)用method2,當前斷點的位置j=100,點擊上圖紅色箭頭位置的Drop Frame圖標后,時間穿越了。  
 
 
回到了method1剛開始調(diào)用的時候,變量i變成了99,沒毛病吧,老鐵們,是不是很6 :)。  
 
微信搜索   「   程序員的成長之路   」關(guān)注后回復   「   2048   」   關(guān)鍵字,免費獲取5T技術(shù)學習資源!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。  
注:好奇心是人類進步的階梯,如果想知道為啥這個功能叫Drop Frame,而不是類似Back To Previous 之類的,可以去翻翻JVM的書,JVM內(nèi)部以棧幀為單位保存線程的運行狀態(tài),drop frame即扔掉當前運行的棧幀,這樣當前“指針”的位置,就自然到了上一幀的位置。
三、多線程調(diào)試  
多線程同時運行時,誰先執(zhí)行,誰后執(zhí)行,完全是看CPU心情的,無法控制先后,運行時可能沒什么問題,但是調(diào)試時就比較麻煩了,最明顯的就是斷點亂跳,一會兒停這個線程,一會兒停在另一個線程,比如下圖:
IntelliJ IDEA的調(diào)試技巧  
如果想希望下一個斷點位置是第2句詩句,可能要失望了:  
 
 
如果想讓線程在調(diào)試時,想按自己的愿意來,讓它停在哪個線程就停在哪個線程,可以在圖中3個斷點的小紅點上右擊。  
 
IntelliJ IDEA的調(diào)試技巧  
即:Suspend掛起的條件是按每個線程來,而非All。把這3個斷點都這么設置后,再來一發(fā)試試。  
 
 
注意上圖中的紅框位置,斷點停下來時,這個下拉框可以看到各個線程(注:給線程起個容易識別的名字是個好習慣?。?,我們可以選擇線程“天空中的飛鳥”。  
 
IntelliJ IDEA的調(diào)試技巧  
斷點如愿停在了第2句詩。
四、遠程調(diào)試  
這也是一個裝B的利器,本機不用啟動項目,只要有源代碼,可以在本機直接遠程調(diào)試服務器上的代碼,打開姿勢如下:
4.1 項目啟動時,先允許遠程調(diào)試
 
     
     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
 
注意:遠程調(diào)試從技術(shù)上講,就是在本機與遠程建立scoket通訊,所以端口不要沖突,而且本機要允許訪問遠程端口,另外這一段參數(shù),放要在-jar 或 ${main_class}的前面。
4.2 idea中設置遠程調(diào)試
 
然后就可以調(diào)試了。  
 
IntelliJ IDEA的調(diào)試技巧  
前提是本機有項目的源代碼 ,在需要的地方打個斷點,然后訪問一個遠程的url試試,斷點就會停下來。
五、臨時執(zhí)行表達式/修改變量的運行值  
調(diào)試時,可以臨時執(zhí)行一些表達式,參考下圖:點擊這二個圖標中的任何1個都可以。
IntelliJ IDEA的調(diào)試技巧  
點擊+號后,就可以在新出現(xiàn)的輸入框里輸入表達式,比如i+5。  
 
 
然后回車,馬上就能看到結(jié)果。  
 
IntelliJ IDEA的調(diào)試技巧  
當然,如果調(diào)試時,想動態(tài)修改變量的值,也很容易,在變量上右擊,然后選擇Set Value,剩下的事,地球人都知道。  

“IntelliJ IDEA的調(diào)試技巧”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI