IDEA—DEBUG功能
一、常用快捷鍵
快捷鍵並不是完全一樣的,我這邊是MAC安裝的IDEA, 這邊最主要還是知道DEBUG時常用的功能。
1、快捷鍵
F7 #進入下一步,如果當前行是一個方法,則進入當前方法體內
F8 #進入下一步,如果當前行是一個方法,則不進入當前方法體內
F9 #跳到下一個斷點,如果沒有則直接運行結束
Alt + F8 #表達式求值
Alt + F9 #代碼會運行至光標行,而不需要打斷點
Shift + F8 #跳出進入的方法體,回到上級代碼處
Ctrl+Shift+F9 #DEBUG模式運行
Ctrl+F5 #重新運行
Shift+Command+F8 #查看所有斷點,為斷點添加條件等
2、圖形化界面解釋
第一組

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

Rerun 'xxxx':重新運行程序,會關閉服務后重新啟動程序。
(Ctrl + F5):更新程序,一般在你的代碼有改動后可執行這個功能。
(F9):跳到下一個斷點,如果沒有則直接運行結束。
Pause Program:暫停程序,啟用Debug。目前沒發現具體用法。
(Ctrl + F2):連續按兩下,關閉程序。有時候你會發現關閉服務再啟動時,報端口被占用,這是因為沒完全關閉服務的原因,你就需要查殺所有JVM進程了。
(Ctrl + Shift + F8):查看所有斷點。
Mute Breakpoints:啞的斷點,選擇這個后,所有斷點變為灰色,斷點失效,按F9則可以直接運行完程序。
3、MAC的功能鍵實效
如果你是mac系統你的功能鍵F1~F12,對於IDEA可能是實效的,這里需要相關設置。

二、計算表達式
可以使用這個操作在調試過程中計算某個表達式的值,比如是否為空,獲取其它值的計算,同時它還可以修改屬性值。
1、計算表達式
int age = 10;
String name = "小小";
//這里有個判斷條件,我想知道age > 5 的計算結果
if (age > 5 && name == null) {
System.out.println("age = " + age);
}
第一種直接選中age>5它會直接告訴你計算結果。

第二種通過Alt+F9輸入計算表達式,也會計算結果。

2、修改屬性字段
下面age為10,那么age == 18 就為false

這時我通過Alt+F9修改屬性

發現這個屬性值已經修改成我們自定義的18了。
重要 順便說下如果我們需要查看一些重要的屬性值的變化,那么我們可以將variables中的屬性添加到Watches進行前后觀察,這樣更加直觀。比如下面age。

三、斷點條件設置
這個一般循環內比較實用,因為我們在循環體內設置斷點,如果沒有條件判斷那么我們需要一個一個執行。條件判斷就帶來很大便利。


在該斷點設置條件判斷,設置好后該斷點上會有個❓

四、異常斷點
好多時候debug的時候報異常了,如果異常恰好在for里,這個時候你也不能用條件判斷打斷點,因為不知道用什么條件的打這個斷點,這個時候異常斷點就很有用了。
比如下面,並沒有打上任何斷點

設置異常斷點 快捷鍵Shift+Command+F8 點擊+號,設置相關異常

運行結果

只要自己變優秀了,其他的事情才會跟着好起來(少將19)
