本篇文章是基於IntelliJ IDEA2018.3.2版本,Debug模式的圖標由於不一樣版本有點點小區別,可是功能基本同樣。數據庫
如圖紅色框框甲殼蟲模樣的即是咱們本文中的debug啓動模式,在平常開發中也是用這個啓動開發項目,文章候面會詳細對比各類啓動方式的異同數組
打斷點方法和Eclipse相似,只須要在本身想要調試的代碼左邊行號欄單擊左鍵就能夠,或者快捷鍵Ctrl+F8 打上/取消斷點,下面先談談如何進行debug的優化設置,如圖多線程
如上圖標識所示,設置 Debug 鏈接方式,默認是 Socket 。 Shared memory 是 Windows 特有的一 個屬
性,通常在 Windows 系統下建議使用此設置,內存佔用相對較少。
2 進入Debug運行模式
設置斷點:在代碼的左邊欄單擊,出現 ,則說明已經此行代碼設置了斷點,可對任意多行設置函數
取消斷點:單擊 就取消了斷點測試
進入Debug模式:代碼空白處右鍵,而後選擇 Debug HelloWorld.main() ‘;或快捷鍵 Ctrl+F5
Debug啓動後,程序會停頓在第一個斷點上,debug視圖主要界面以下,各個按鍵分別是什麼意思呢?優化
1. Show Execution Point (Alt + F10):若是你的光標在其它行或其它頁面,點擊這個按鈕可跳轉到當前代碼執行的行。lua
2. Step Over (F8):越過,一行一行地往下走,若是這一行上有方法不會進入方法。spa
3. Step Into (F7):步入,若是當前行有方法,能夠進入方法內部,通常用於進入自定義方法內,不會進入官方類庫的方法。線程
4. Force Step Into (Alt + Shift + F7):強制步入,能進入任何方法,查看底層源碼的時候能夠用這個進入官方類庫的方法。debug
5. Step Out (Shift + F8):步出,從步入的方法內退出到方法調用處,此時方法已執行完畢,只是尚未完成賦值。
6. Drop Frame (默認無):回退斷點,後面章節詳細說明。
7. Run to Cursor (Alt + F9):運行到光標處,你能夠將光標定位到你須要查看的那一行,而後使用這個功能,代碼會運行至光標行,而不須要打斷點。
7右邊的小計算器. Evaluate Expression (Alt + F8):計算表達式。
8. 重啓項目,快捷鍵Ctrl + F5,通常在你的代碼有改動後可執行這個功能,意味從新啓動項目。
9. 恢復程序,快捷鍵F9,在有多個斷點的狀況下,會直接跳到下一個斷點,若是當前斷點爲最後一個則直接運行結束。
10. 暫停項目
11. 中止當前啓動的項目。快捷鍵Ctrl + F2
12. View Breakpoints 查看全部斷點。快捷鍵Ctrl + Shift + F8
13..靜啞斷點,使全部斷點無效,相似於無斷點運行。選擇這個後,全部斷點變爲灰色,斷點失效,按F9則能夠直接運行完程序。再次點擊,斷點變爲紅色,有效。例如:加入斷點過多,咱們在其中某一個斷點已經找到問題想要的答案,後面的斷點不想繼續了,能夠點擊一下該功能,就能夠直接運行到程序結束。
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裏拖到Watches裏查看。
計算表達式,Evaluate Expression (Alt + F8) 。可使用這個操做在調試過程當中計算某個表達式的值,而不用再去打印信息。
1.點擊計算表達式按鈕或快捷鍵Alt + F8,你也能夠選中某個表達式再Alt + F8,彈出計算表達式的窗口,以下,回車或點擊Evaluate計算表達式的值
這個表達式不只能夠是通常變量或參數,也能夠是方法,當你的一行代碼中調用了幾個方法時,就能夠經過這種方式查看查看某個方法的返回值。
鼠標右鍵點擊斷點,調出以下窗口,固然也能夠經過快捷鍵Ctrl + Shift + F8
如上圖經過設置Conditionn內容設置斷點條件,經過設置斷點條件,在知足條件時,才停在斷點處,不然直接運行。
如遍歷集合或者數組的時候,咱們只想當下標等於某個值的時候才進入斷點調試。如我但願當 a=a時才進入斷點,
通常debug都是單線程調試,可是開發過多線程應用,有些時候,爲了觀察多個線程間變量的不一樣狀態,以及鎖的獲取等,就會想到在代碼里加個斷點debug一下。在IDE裏斷點停下來的時候,能夠切換到另外的線程中,跑其餘的代碼,不會互相影響。可是在IntelliJ IDEA裏默認是沒有開啓的。也就是說若是你在IDEA裏代碼里加斷點,雖然一個線程的斷了下來,但其餘線程的已經執行過了。此處勾選上Suspend,並選擇Thread,設置make default以後,也能夠開始多線程應用的調試。
一個線程斷下來以後,能夠經過在線程窗口切換,到其它線程中繼續運行。IntelliJ IDEA裏在這兒切換
在調試的時候若是點擊過快,錯過了本身想要關注的那一行,如何能跳回到上一步呢?依靠後退執行的功能,能夠後退,就像下棋時悔棋那種功能同樣。
所謂的斷點回退,其實就是回退到上一個方法調用的開始處,在IDEA裏測試沒法一行一行地回退或回到到上一個斷點處,而是回到上一個方法。回退的方式有兩種:
第一種是Drop Frame按鈕,按調用的方法逐步回退,包括三方類庫的其它方法(取消Show All Frames按鈕會顯示三方類庫的方法)。
第二種方式,在調用棧方法上選擇要回退的方法,右鍵選擇Drop Frame,回退到該方法的上一個方法調用處,此時再按F9(Resume Program),能夠看到程序進入到該方法的斷點處了。
但有一點須要注意,斷點回退只能從新走一下流程,以前的某些參數/數據的狀態已經改變了的是沒法回退到以前的狀態的,如對象、集合、更新了數據庫數據等等。