1. 程式人生 > >這幾個IDEA高階除錯技巧,用完就是香

這幾個IDEA高階除錯技巧,用完就是香

一個專案啟動兩次

測試分散式專案時,經常要一個專案啟動2次,不用將一個專案開啟多次啟動,配置一下即可

1.點選Edit Configurations

2.勾選Allow parallel run

3.依次點選如下2個按鈕

條件斷點

有如下程式碼,只想讓它在i == 10的情況下停下來

@Test
public void condition() {
    for (int i = 0; i < 30; i++) {
        System.out.println(i);
    }
}

1.滑鼠左鍵在行數上加上斷點
2.在斷點上右鍵加上條件
3.點選Done按鈕

此時斷點上會有問號,表示這是一個條件斷點,右鍵點選即可檢視條件

多執行緒除錯

當有多個執行緒時,我們如何控制執行緒的執行順序呢?

@Test
public void thread() {

    new Thread(() -> {
        System.out.println("我是執行緒1-1");
        System.out.println("我是執行緒1-2");
        System.out.println("我是執行緒1-3");
    }, "執行緒1").start();

    new Thread(() -> {
        System.out.println("我是執行緒2-1");
        System.out.println("我是執行緒2-2");
        System.out.println("我是執行緒2-3");
    }, "執行緒2").start();

    System.out.println("主執行緒");

}

例如讓執行緒1和2依次執行如下程式碼

System.out.println("我是執行緒1-1");
System.out.println("我是執行緒2-1");
System.out.println("我是執行緒1-2");
System.out.println("我是執行緒2-2");

普通模式debug模式下是做不到的,因為我們沒辦法控制執行緒的執行順序。需要做如下設定

1.右鍵點選斷點,選中Thread(Make Default表示把當前選中的Thread設定為預設值)

設定後的斷點如下,3個斷點都是Thread模式

執行到某個語句想切換執行緒的時候選中下一步要執行的執行緒即可

臨時執行表示式/修改變數值

程式碼如下

public class User {

    private String username;
    private Integer age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

@Test
public void changeValue() {
    User user = new User();
    user.setUsername("aa");
    System.out.println(user.getUsername() + " " + user.getAge());
}

在輸出語句上加上斷點

在斷點處執行了

user.setAge(10);

最後的輸出結果為

aa 10

我們也可以直接右鍵選中Set Value修改username屬性等

回退


當斷點執行到method2()時,想回退到method1時,點選如下按鈕即可

需要注意的是,斷點回退只能重新走一下流程,某些改變了的資料是無法回退到之前的狀態,如物件、集合等等

歡迎關注

關注回覆 pdf目錄 有驚喜,海量視訊資源訪問 www.erlie.cc

參考部落格

[1]https://www.cnblogs.com/jun1019/p/9741224.html
[2]https://www.cnblogs.com/chiangchou/p/idea-debug.h