IntelliJ IDEA(十一) :Debug的使用

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

1、基本介紹

本篇文章是基於IntelliJ IDEA2018.1.6版本,最新的版本2018.2已經出來了,支持Java11,Debug模式的圖標設計雖有微調改動,可是功能大致相通。數組

上圖爬蟲的圖標就是Debug模式運行鍵,綠色三角形圖標是正常的Run模式,長框中能夠設置Debug運行配置。多線程

打斷點方法和Eclipse相似,只須要在本身想要調試的代碼左邊行號欄單擊左鍵就能夠,或者快捷鍵Ctrl+F8 打上/取消斷點函數

Debug啓動後,程序會停頓在第一個斷點上,debug視圖主要界面以下,各個按鍵分別是什麼意思呢?測試

>>> 先來看下最左側的各個按鍵,自上而下:lua

1. 重啓項目,快捷鍵Ctrl + F5,通常在你的代碼有改動後可執行這個功能,意味從新啓動項目。spa

2. 恢復程序,快捷鍵F9,在有多個斷點的狀況下,會直接跳到下一個斷點,若是當前斷點爲最後一個則直接運行結束。線程

3. 暫停項目debug

4. 中止當前啓動的項目。快捷鍵Ctrl + F2設計

5. View Breakpoints 查看全部斷點。快捷鍵Ctrl + Shift + F8

咱們打過的斷點均可以在此窗口顯示,若是想刪除某個斷點,則能夠選中列表中的該斷點,點擊紅色的減號來進行刪除。或者也能夠經過不選中該斷點來使斷點失效。另外,

這個是針對單個斷點定製的,亦能夠在項目中斷點處右擊調出該界面。

   * Java Line Breakpoints 顯示了全部的斷點,在右邊勾選Condition,設置斷點的條件。

   * 勾選Log message to console,則會將當前斷點行輸出到控制檯。

   * 勾選Evaluate and log,能夠在執行這行代碼是計算表達式的值,並將結果輸出到控制檯。

6. 靜啞斷點,使全部斷點無效,相似於無斷點運行。選擇這個後,全部斷點變爲灰色,斷點失效,按F9則能夠直接運行完程序。再次點擊,斷點變爲紅色,有效。

例如:加入斷點過多,咱們在其中某一個斷點已經找到問題想要的答案,後面的斷點不想繼續了,能夠點擊一下該功能,就能夠直接運行到程序結束。

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

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):計算表達式。

 

2、快捷鍵說明

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            計算表達式

 

3、變量查看

在Debug過程當中,跟蹤查看變量的變化是很是必要的,這裏就簡單說下IDEA中能夠查看變量的幾個地方

一、在IDEA中,參數所在行後面會顯示當前變量的值。

 

二、光標懸停到參數上,顯示當前變量信息,快捷方便。

三、在Variables裏查看,這裏顯示當前方法裏的全部變量。

 四、在Watches裏,點擊New Watch,輸入須要查看的變量。或者能夠從Variables裏拖到Watche裏查看。

 

4、計算表達式

計算表達式,Evaluate Expression (Alt + F8) 。可使用這個操做在調試過程當中計算某個表達式的值,而不用再去打印信息。

一、點擊計算表達式按鈕或快捷鍵Alt + F8,你也能夠選中某個表達式再Alt + F8,彈出計算表達式的窗口,以下,回車或點擊Evaluate計算表達式的值。

這個表達式不只能夠是通常變量或參數,也能夠是方法,當你的一行代碼中調用了幾個方法時,就能夠經過這種方式查看查看某個方法的返回值。

二、設置變量,在計算表達式的框裏,能夠改變變量的值,這樣有時候就能很方便咱們去調試各類值的狀況了。 

 

5、調試技巧

鼠標右鍵點擊斷點,調出以下窗口,固然也能夠經過快捷鍵Ctrl + Shift + F8

一、斷點條件設置

如上圖經過設置Conditionn內容設置斷點條件,經過設置斷點條件,在知足條件時,才停在斷點處,不然直接運行。

如遍歷集合或者數組的時候,咱們只想當下標等於某個值的時候才進入斷點調試。以下數組,我但願當 i=5時才進入斷點,

則能夠這樣設置:

二、多線程調試

通常debug都是單線程調試,可是開發過多線程應用,有些時候,爲了觀察多個線程間變量的不一樣狀態,以及鎖的獲取等,就會想到在代碼里加個斷點debug一下。在IDE裏斷點停下來的時候,能夠切換到另外的線程中,跑其餘的代碼,不會互相影響。可是在IntelliJ IDEA裏默認是沒有開啓的。也就是說若是你在IDEA裏代碼里加斷點,雖然一個線程的斷了下來,但其餘線程的已經執行過了。此處勾選上Suspend,並選擇Thread,設置make default以後,也能夠開始多線程應用的調試。

一個線程斷下來以後,能夠經過在線程窗口切換,到其它線程中繼續運行。IntelliJ IDEA裏在這兒切換

三、回退斷點

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

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

第一種是Drop Frame按鈕,按調用的方法逐步回退,包括三方類庫的其它方法(取消Show All Frames按鈕會顯示三方類庫的方法)。

第二種方式,在調用棧方法上選擇要回退的方法,右鍵選擇Drop Frame,回退到該方法的上一個方法調用處,此時再按F9(Resume Program),能夠看到程序進入到該方法的斷點處了。

但有一點須要注意,斷點回退只能從新走一下流程,以前的某些參數/數據的狀態已經改變了的是沒法回退到以前的狀態的,如對象、集合、更新了數據庫數據等等。

 

 

 

6、JRebel熱部署

 後續補充

相關文章
相關標籤/搜索