前言:之前博主寫過一篇idea技巧合集的文章,由于技巧過于多了,文章很龐大,所以特地將調試相關的技巧單獨成章, 調試和我們日常開發是息息相關的,用好調試可以事半功倍
文章目錄
- 1. idea調試異步線程
- 2. idea調試stream流
- 3. 根據條件進入斷點
- 4. 調試當前代碼行
- 5. 修改變量值調試
- 6. 監控斷點
1. idea調試異步線程
默認idea是調試主線程的,如果開啟了異步線程 打斷點不會進入,這在我們調試源碼時不方便(例如redisson的源碼會有大量異步線程的操作)
我們只需要在斷點右鍵 在Supend選擇Thread
(要注意的是 選擇Thread的斷點需要全面 例如A線程之后的代碼開啟了異步線程B,異步線程B下面有異步線程C的代碼 斷點需要在A/B/C線程都選上Thread 否則仍然不會進入C)
2. idea調試stream流
idea2024是非常方便調試的,不用額外操作;
在早些版本中:點擊Trace Current Stream Chain 查看流的每步操作
3. 根據條件進入斷點
斷點右鍵寫上Condition條件表達式即可,這在循環調試中非常方便,舉個栗子:
直接跳過了前面無關數據
4. 調試當前代碼行
我們用例子來解釋是什么意思:
如下圖 我們模擬了兩個斷點
一般情況下 我們會選擇打多個斷點 一步步調試,執行完第一個斷點后,我們通常點擊 跳到下一個斷點
經常調試源碼的同學應該深有體會,斷點打一堆后會多不方便;拿jdk源碼來說,在某個方法打上一個斷點,有N多其它線程可能執行到斷點。
那我們有沒有什么方式 不打斷點也能調試呢? 有的,有的,確實有的:
鼠標光標放在要調試的那行代碼,按 ctrl + alt + F9
(博主idea用的是eclipse的那套快捷鍵,如果不是用的這套快捷鍵 不生效的話 試試 alt + F9 )
如上圖,不打斷點 仍然可以調試
5. 修改變量值調試
我們還是拿一個循環來舉例:
我們不想關心 i<9 的邏輯時,可以在調試時 右鍵選擇 evaluate expression
在expression時直接修改變量
6. 監控斷點
監控斷點是打在全局變量上面的斷點,每當變量值發生變化的時候 都會有提示:
如圖,我們只在定義變量時手動打上斷點:
隨著我們執行代碼,在變量發生修改時 會自動提示:
public class DebugTest {static String name = "";public static void main(String[] args) {name = "csdn:孟秋與你";DebugInnerTest debugInnerTest = new DebugInnerTest();name = debugInnerTest.modifyName(name);System.out.println(name);}
}class DebugInnerTest {public String modifyName(String name) {return "修改名";}
}
因為局部變量的生命周期僅在其作用域內有效(如函數、循環等),IDEA 無法直接在局部變量上設置獨立的數據斷點(監視值變化);在實際開發時,如果遇到某個方法內部的局部變量值很難調試 想監聽時,那把它先定義成全局變量即可 調試完再改回去。