一、使用條件斷點定位問題
1、條件斷點可以幫助我們定位一些奇怪的報錯或程序行為。
2、在IDEA調試窗口中選中需要條件斷點的代碼行,右鍵-Add breakpoint-Condition
// 舉例代碼段 public class Test { public static void main(String[] args) { int sum = 0; for(int i = 1; i <= 100; i++) { sum += i; } System.out.println(sum); } }
3、條件輸入框中添加布爾型的條件表達式
// 舉例代碼段的條件斷點示例 public class Test { public static void main(String[] args) { int sum = 0; for(int i = 1; i <= 100; i++) { sum += i; if(i == 50) { System.out.println(sum); } } System.out.println(sum); } }
二、日誌斷點記錄流程信息
1、日誌斷點可以記錄程序的流程信息,例如調用了哪些方法或者程序執行時間等。
2、在IDEA調試窗口中選中需要日誌斷點的代碼行,右鍵-Add breakpoint-Log message
// 舉例代碼段的日誌斷點示例 public class Test { public static void main(String[] args) { int sum = 0; for(int i = 1; i <= 100; i++) { sum += i; System.out.println("i = " + i + ", sum = " + sum); //斷點 } System.out.println(sum); } }
3、在“Log Expression”輸入框中輸入需要記錄的信息,在“More”選項中可以設置輸出日誌等級。
三、動態調試操作
1、調試過程中可以動態地調整程序的行為。
2、在IDEA調試窗口中右鍵選中需要動態調整的代碼行,選擇Evaluate expression或者Watch選項卡。
// 舉例代碼段的動態調試示例 public class Test { public static void main(String[] args) { int sum = 0; for(int i = 1; i <= 100; i++) { if(i % 2 == 0) { sum += i; } System.out.println(sum); // 斷點 } } }
3、在“Evaluate expression”輸入框中輸入想要修改的變量值,例如:sum=10,點擊”Enter”或選擇”Evaluate”。
四、多線程調試
1、多線程並發調試需要注意多線程間的同步。
2、在IDEA調試窗口中,選擇“View breakpoint”,選定“Java Exception Breakpoints”,選中“Synchronized”項。
// 舉例代碼段的多線程並發調試示例 public class TestThread extends Thread { public static void main(String[] args) { TestThread thread1 = new TestThread(); TestThread thread2 = new TestThread(); thread1.start(); thread2.start(); } public synchronized void run() { for(int i=0;i<5;i++) { try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "-" + i); } } }
3、使用並發測試工具來驗證多線程並發的結果是否正確。
五、利用IDEA的快捷鍵加速調試
1、提高調試效率,掌握IDEA的快捷鍵是必須的。
2、常見快捷鍵如下:
Ctrl+F8 : 跳過斷點
Ctrl+Shift+F9 : 運行程序至光標所在代碼行
Ctrl+Alt+Shift+R : 運行程序至光標所在代碼行並打開Debug窗口
F8 : 單步運行
Shift+F8 : 跳過當前行,進入下一行
F7 : 進入當前行調用的方法
Shift+F7 : 跳過當前方法
Alt+F9 : 運行至光標所在行方法結束
Alt+F8 : 在Debug模式中計算表達式
3、快捷鍵可以根據個人喜好自定義。
原創文章,作者:SDFC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148556.html