無論你是從事Android APP開發 or Java後臺伺服器開發,我想大家應該都知道IDEA的大名。如果你還一直躺在Eclipse的溫室中,那麼也強烈建議的來試試IDEA,很香的!
調試,是每一個開發者必備的技能。常言道,眼過千遍不如手過一遍,手過一遍,不如Debug一遍!軟體調試技能是很好的區分程式設計師水平高低的一桿秤。下面為大家介紹幾個用起來爽到爆的調試技巧。
調試過程中,循環語句經常用到的一個技巧,比如:遍歷一個比較大的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個斷點都這麼設置後,再試一次
注意上圖中的紅框位置,斷點停下來時,這個下拉框可以看到各個線程(註:給線程起個容易識別的名字是個好習慣!),我們可以選擇線程「天空中的飛鳥」,斷點如願停在了第二句。
這也是一項很常用的功能,調試時,可以臨時執行一些表達式,參考下圖:點擊這二個圖標中的任何1個都可以。
點擊+號後,就可以在新出現的輸入框裡輸入表達式,比如i+5,然後回車,即可看到效果,具體可參照下面兩張圖。
當然,如果調試時,想動態修改變量的值,也很容易,在變量上右擊,然後選擇Set Value,剩下的事,地球人都知道。
當然,IDEA是支持遠程調試的,限於篇幅,這裡就不在進行介紹了,感興趣的童鞋可以直接參考網上資料。