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)