debug

對JDK進行Debug

有時候要追到jdk原始碼裡面來debug,但要有以下的設定才能setp into JDK原始碼。

IntelliJ -> Settings

img

把勾勾取消,代表可以進入jdk原始碼。

沒有force step into的按鈕

上面的設定有設的話,基本的step into(F7)就可以進到JDK原始碼。

如果還是沒辦法進去JDK原始碼,就要試著force step into。

以下步驟可以產生force step into按鈕,可以透過force step into進入JDK原始碼。

img

img

img

img

img

Force step into快速鍵。

macOS:Option + Shift + F7

Windows:Alt + Shift + F7

測試

請在Arrays.sort()這一行設中斷點。

1
2
3
4
5
6
public class Type {
  public static void main(String[] args) {
    int[] arr = {100, 20, 64, 1, 98};
    Arrays.sort(arr);  // 設中斷點
  }
}

img

然後滑鼠右鍵,按Debug。

img

然後按step into的按鈕,或者按F7,檢查是否進入JDK原始碼。

img

若要離開方法,按step out。

執行下一行,setp over。

console

請在System.out.println(arr[i]);設中斷點。

1
2
3
4
5
int[] arr = {100, 20, 64, 1, 98};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
  System.out.println(arr[i]);
}

然後Debug。

執行setp over,移到下一行。

console的部分有黃色圖示,代表有資料在console顯示。

img

切換至console。

img

顯示正確集合大小

要Debug ArrayList查看容量變化大小,要把以下勾勾取消。

img

img

迴圈設置要進入Debug的條件

迴圈 for (int i = 0; i < 3; i++) 中,想直接跳過 i=0 與 i=1,從 i=2 開始 Debug。
下了中斷點後,對著中斷點按滑鼠右鍵,輸入condition條件。
然後再執行Debug。
img

在方法中,要脫離迴圈

以下的方法是floyed(),裡面有三層for,若想跳過j=0,直接按step out,從j=1開始。
img

若在main()方法,三層迴圈使用step out,則會跳出main方法(),程式執行完畢。

results matching ""

    No results matching ""