Intellij IDEA debug 模式

原文鏈接:https://www.cnblogs.com/jajian/p/9410844.html#autoid-0-5-0

Debug模式是開發人員必會的一項調試程序的技能,用來追蹤代碼的運行流程,線上問題追蹤,程序運行異常定位調試,以及在運行過程中參數的變化。IDEA的debug對於新手如何快速上手呢?

一、基本介紹

本篇文章是基於 IntelliJ IDEA 2018.1.6 版本,最新的版本 2018.2 已經出來了,支持 Java11,Debug 模式的圖標設計雖有微調改動,但是功能大體相通。
在這裏插入圖片描述
上圖爬蟲的圖標就是 Debug 模式運行鍵,綠色三角形圖標是正常的 Run 模式,長框中可以設置 Debug 運行配置。
在這裏插入圖片描述
打斷點方法和Eclipse類似,只需要在自己想要調試的代碼左邊行號欄單擊左鍵就可以,或者快捷鍵Ctrl+F8 打上/取消斷點。
在這裏插入圖片描述
Debug 啓動後,程序會停頓在第一個斷點上,Debug 視圖主要界面如下,各個按鍵分別是什麼意思呢?
在這裏插入圖片描述
先來看下最左側的各個按鍵,自上而下:

  1. 重啓項目,快捷鍵 Ctrl + F5,一般在你的代碼有改動後可執行這個功能,意味重新啓動項目。
  2. 恢復程序,快捷鍵 F9,在有多個斷點的情況下,會直接跳到下一個斷點,如果當前斷點爲最後一個則直接運行結束。
  3. 暫停項目
  4. 停止當前啓動的項目。快捷鍵 Ctrl + F2
  5. View Breakpoints 查看所有斷點。快捷鍵 Ctrl + Shift + F8
  6. 靜啞斷點,使所有斷點無效,類似於無斷點運行。選擇這個後,所有斷點變爲灰色,斷點失效,按 F9 則可以直接運行完程序。再次點擊,斷點變爲紅色,有效。例如:加入斷點過多,我們在其中某一個斷點已經找到問題想要的答案,後面的斷點不想繼續了,可以點擊一下該功能,就可以直接運行到程序結束。

在這裏插入圖片描述
我們打過的斷點都可以在此窗口顯示,如果想刪除某個斷點,則可以選中列表中的該斷點,點擊紅色的減號來進行刪除。或者也可以通過不選中該斷點來使斷點失效。另外,
在這裏插入圖片描述
這個是針對單個斷點定製的,亦可以在項目中斷點處右擊調出該界面。

  • Java Line Breakpoints 顯示了所有的斷點,在右邊勾選 Condition,設置斷點的條件。
  • 勾選 Log to console,則會將當前斷點行輸出到控制檯。
  • 勾選 Evaluate and log,可以在執行這行代碼是計算表達式的值,並將結果輸出到控制檯。

接下來是實際調試過程中常用用到的幾個功能自左右向分別爲:

  1. Show Execution Point (Alt + F10):如果你的光標在其它行或其它頁面,點擊這個按鈕可跳轉到當前代碼執行的行。
  2. Step Over (F8):越過,一行一行地往下走,如果這一行上有方法不會進入方法。
  3. Step Into (F7):步入,如果當前行有方法,可以進入方法內部,一般用於進入自定義方法內,不會進入官方類庫的方法。
  4. Force Step Into (Alt + Shift + F7):強制步入,能進入任何方法,查看底層源碼的時候可以用這個進入官方類庫的方法。
  5. Step Out (Shift + F8):步出,從步入的方法內退出到方法調用處,此時方法已執行完畢,只是還沒有完成賦值。
  6. Drop Frame (默認無):回退斷點,後面章節詳細說明。
  7. Run to Cursor (Alt + F9):運行到光標處,你可以將光標定位到你需要查看的那一行,然後使用這個功能,代碼會運行至光標行,而不需要打斷點。
  8. Evaluate Expression (Alt + F8):計算表達式。

二、快捷鍵說明

Run                 Shift + F10         運行最近一次運行的函數
Debug               Shift + F9          運行debug最近一次運行的函數
Run                 Alt + Shift + F10   初次運行指定的函數
Debug               Alt + Shift + F9    初次debug運行指定的函數
Stop                Ctrl + F2           停止項目
Step Over           F8                  越過當前函數
Forcce Step Over    Alt + Shift + F8    強制越過
Step Into           F7                  步入當前函數
Force Step Into     Alt + Shift + F7    強行進入當前函數
Smart Step Into     Shift + F7          只能進入當前函數
Step out            Shift + F8          步出
Resume Program      F9                  恢復程序
Evaluate Expression Alt + F8            計算表達式

三、變量查看

在 Debug 過程中,跟蹤查看變量的變化是非常必要的,這裏就簡單說下 IDEA 中可以查看變量的幾個地方。
1、在IDEA中,參數所在行後面會顯示當前變量的值。
在這裏插入圖片描述
2、光標懸停到參數上,顯示當前變量信息,快捷方便。
在這裏插入圖片描述
3、在Variables裏查看,這裏顯示當前方法裏的所有變量。
在這裏插入圖片描述
4、在Watches裏,點擊New Watch,輸入需要查看的變量。或者可以從Variables裏拖到Watche裏查看。
在這裏插入圖片描述

四. 計算表達式

計算表達式,Evaluate Expression (Alt + F8) 。可以使用這個操作在調試過程中計算某個表達式的值,而不用再去打印信息。
在這裏插入圖片描述
1、 點擊計算表達式按鈕或快捷鍵 Alt + F8,你也可以選中某個表達式再 Alt + F8,彈出計算表達式的窗口,如下,回車或點擊 Evaluate 計算表達式的值。

這個表達式不僅可以是一般變量或參數,也可以是方法,當你的一行代碼中調用了幾個方法時,就可以通過這種方式查看查看某個方法的返回值。
在這裏插入圖片描述
2、設置變量,在計算表達式的框裏,可以改變變量的值,這樣有時候就能很方便我們去調試各種值的情況了。
在這裏插入圖片描述

五、調試技巧

鼠標右鍵點擊斷點,調出如下窗口,當然也可以通過快捷鍵 Ctrl + Shift + F8
在這裏插入圖片描述

1、斷點條件設置

如上圖通過設置Conditionn內容設置斷點條件,通過設置斷點條件,在滿足條件時,才停在斷點處,否則直接運行。

如遍歷集合或者數組的時候,我們只想當下標等於某個值的時候才進入斷點調試。如下數組,我希望當 i=5時才進入斷點,
在這裏插入圖片描述
則可以這樣設置:
在這裏插入圖片描述

2、多線程調試

一般debug都是單線程調試,但是開發過多線程應用,有些時候,爲了觀察多個線程間變量的不同狀態,以及鎖的獲取等,就會想到在代碼里加個斷點debug一下。在IDE裏斷點停下來的時候,可以切換到另外的線程中,跑其他的代碼,不會互相影響。但是在IntelliJ IDEA裏默認是沒有開啓的。也就是說如果你在IDEA裏代碼里加斷點,雖然一個線程的斷了下來,但其他線程的已經執行過了。此處勾選上Suspend,並選擇Thread,設置make default之後,也可以開始多線程應用的調試。
在這裏插入圖片描述
一個線程斷下來之後,可以通過在線程窗口切換,到其它線程中繼續運行。IntelliJ IDEA裏在這兒切換
在這裏插入圖片描述

3、回退斷點

在調試的時候如果點擊過快,錯過了自己想要關注的那一行,如何能跳回到上一步呢?依靠後退執行的功能,可以後退,就像下棋時悔棋那種功能一樣。

所謂的斷點回退,其實就是回退到上一個方法調用的開始處,在 IDEA 裏測試無法一行一行地回退或回到到上一個斷點處,而是回到上一個方法。回退的方式有兩種:

第一種是 Drop Frame 按鈕,按調用的方法逐步回退,包括三方類庫的其它方法(取消 Show All Frames 按鈕會顯示三方類庫的方法)。
在這裏插入圖片描述
第二種方式,在調用棧方法上選擇要回退的方法,右鍵選擇 Drop Frame,回退到該方法的上一個方法調用處,此時再按 F9(Resume Program),可以看到程序進入到該方法的斷點處了。

但有一點需要注意,斷點回退只能重新走一下流程,之前的某些參數/數據的狀態已經改變了的是無法回退到之前的狀態的,如對象、集合、更新了數據庫數據等等。
在這裏插入圖片描述
在這裏插入圖片描述

六、JRebel熱部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章