IDEA Debug斷點調試技巧詳解

一、使用條件斷點定位問題

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
SDFC的頭像SDFC
上一篇 2024-11-03 15:16
下一篇 2024-11-03 15:17

相關推薦

  • Idea新建文件夾沒有java class的解決方法

    如果你在Idea中新建了一個文件夾,卻沒有Java Class,應該如何解決呢?下面從多個方面來進行解答。 一、檢查Idea設置 首先,我們應該檢查Idea的設置是否正確。打開Id…

    編程 2025-04-29
  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟件開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟件開發中,UML圖是必不可少的重要工具之一。它為軟件架構和各種設計模式的…

    編程 2025-04-29
  • IDEA Java發送郵件出現錯誤解決方案

    IDEA Java是一款常用的Java開發工具,很多開發者都使用它來開發Java應用程序。然而,在使用IDEA Java發送郵件時,有可能會出現一些錯誤。本文將從多個方面對該錯誤進…

    編程 2025-04-29
  • Idea中基於某個分支拉新的分支

    本文將從以下幾個方面介紹Idea中基於某個分支拉新的分支: 一、創建新分支 在Idea的Git工具中,可以方便地從某個分支創建新分支: git checkout -b <ne…

    編程 2025-04-29
  • 優秀周記1000字的撰寫思路與技巧

    優秀周記是每個編程開發工程師記錄自己工作生活的最佳方式之一。本篇文章將從周記的重要性、撰寫思路、撰寫技巧以及周記的示例代碼等角度進行闡述。 一、周記的重要性 作為一名編程開發工程師…

    編程 2025-04-28
  • Idea創建模塊時下面沒有啟動類的解決方法

    本文將從以下幾個方面對Idea創建模塊時下面沒有啟動類進行詳細闡述: 一、創建SpringBoot項目時沒有啟動類的解決方法 在使用Idea創建SpringBoot項目時,有可能會…

    編程 2025-04-28
  • 如何通過IDEA設置gradle的heap大小

    在IDEA中設置gradle的heap大小可以有效提高gradle編譯、運行等使用效率,本文將從以下幾個方面介紹如何通過IDEA設置gradle的heap大小。 一、設置gradl…

    編程 2025-04-28
  • 堆疊圖配色技巧分享

    堆疊圖是數據可視化中常用的一種表現形式,而配色則是影響堆疊圖觀感和傳達信息的重要因素之一。本文將分享一些堆疊圖配色的技巧,幫助你創造更好的數據可視化。 一、色彩搭配原則 色彩是我們…

    編程 2025-04-27
  • 解決idea addconfiguration沒有tomcat

    本篇文章將為大家詳細介紹如何解決使用idea addconfiguration時沒有tomcat選項的情況。 一、檢查安裝路徑 首先,我們需要檢查tomcat是否已經在我們的電腦上…

    編程 2025-04-27
  • 使用uring_cmd提高開發效率的技巧

    對於編程開發工程師來說,提高效率一直是致力追求的目標。本文將深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一個非常強大的命令行工具,但是大部…

    編程 2025-04-27

發表回復

登錄後才能評論