【方向盤】使用IDEA的60+個快捷鍵分享給你,全為了提效(運行/調(diào)試篇)
?前言本系列上篇文章介紹了IDEA里關(guān)于視窗、選擇方面的快捷鍵,熟練掌握可以快速找到、定位到自己想要的代碼。
本文將繼續(xù)IDEA在Run運行、Debug調(diào)試方面的快捷鍵。
所屬專欄
- 【方向盤】-IntelliJ IDEA。
相關(guān)下載
- 【本專欄源代碼】:??https://github.com/yourbatman/FXP-java-ee。??
- 【技術(shù)專欄源代碼大本營】:??https://github.com/yourbatman/tech-column-learning。??
- 【女媧Knife-Initializr工程】訪問地址:??http://152.136.106.14:8761。??
- 【程序員專用網(wǎng)盤】公益上線啦,注冊送1G超小容量,幫你實踐做減法:??https://wangpan.yourbatman.cn。??
- 【Java開發(fā)軟件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit。
版本約定
- Mac OS 12.3。
- iTerm2 3.4.15(zsh 5.8)。
- IntelliJ IDEA 2021.3.3。
正文
IntelliJ IDEA快捷鍵
Run/Debug
在運行方式下,程序執(zhí)行,但不會暫掛或檢查執(zhí)行。
- 在調(diào)試方式下,程序執(zhí)行,但可暫掛執(zhí)行和繼續(xù)執(zhí)行、可檢查變量,還可對表達(dá)式求值。
Run運行
運行(main方法)。運行是個通用概念,這里專指Java語言里的main方法(或者單元測試?yán)锏腀Test)。
運行好理解,這里的重中之重是搞清楚這三個 Run的區(qū)別是什么:
control + r:運行上下文里當(dāng)前的入口,也叫運行上次運行過的入口。
也就是當(dāng)前這里顯示的入口:
它的優(yōu)點是可以在Project的任意地方直接運行此入口來啟動項目,非常非常的方便,也是筆者最為常用的運行方式,畢竟一般來講一個應(yīng)用(不管是Spring
Boot應(yīng)用or傳統(tǒng)war應(yīng)用)只會有一個入口的嘛。
control + shift + r:運行當(dāng)前文件里的main方法。它的特點是:當(dāng)前文件若有main方法,它會自動找到它運行,不管你文件有多長;當(dāng)然嘍,若當(dāng)前文件沒有main方法,那按下此快捷鍵將無反應(yīng)。
- 它的典型使用場景是:自己寫main方法測試某些東西的時候,按下快捷鍵運行將非常高效。
- 值得注意的是:當(dāng)你按下此快捷鍵后,這里(如下圖)也會切換哦,所以此時若再按下control + r執(zhí)行的的可是“它”了。
control + option + r:它不會執(zhí)行運行,而是調(diào)出Run的窗口,讓你選擇入口,如下圖所示:
實話說,這個快捷鍵筆者用得很少,畢竟大多數(shù)情況下就1-2個入口嘛,前兩個快捷鍵足夠用了,各位自取所需。
Debug調(diào)試
邏輯含義完全同Run,這里就不做過多解釋了。
有個小技巧:Run/Debug窗口選擇入口時,按shift是可以互相切換的:
Tips:debug也是一種運行態(tài),從狀態(tài)來講二者都屬于運行范疇,都可以stop停止。
Stop停止
停止正在運行的(進(jìn)程)。比如:main方法進(jìn)程、SQL連接、Http請求、執(zhí)行SQL的進(jìn)程...當(dāng)然嘍,在IDEA里用的最多還是停止main方法進(jìn)程,也就是這個按鈕:
值得注意的事,若當(dāng)前有多個線程正在運行,那么按下此快捷鍵時會彈出窗口,交由你決策(效果同鼠標(biāo)點擊右上角的停止按鈕):
調(diào)試快捷鍵
正所謂三分開發(fā),七分調(diào)試,所以熟練掌握常用的debug調(diào)試快捷鍵,也是用處大大滴。常用按鈕位置分布如圖:
對了,之前發(fā)過一篇“很強悍”的調(diào)試技巧,可結(jié)合本文一起參閱效果更佳:最好的IDEA
debug長文?看完我佛了。
Step Over
單步執(zhí)行、單步調(diào)試。是使用最頻繁的調(diào)試快捷鍵,沒有之一。它的特點是:遇到子函數(shù)時不會進(jìn)入子函數(shù)內(nèi),而是將子函數(shù)整個執(zhí)行完再停止,也就是把子函數(shù)整個作為一步。
Step Into
也叫單步執(zhí)行、單步調(diào)試。和Step Over的區(qū)別是:遇到子函數(shù)時會進(jìn)入子函數(shù)內(nèi)。
Step Out
當(dāng)已經(jīng)單步執(zhí)行到子函數(shù)內(nèi)時,使用此功能可以一次性執(zhí)行完子函數(shù)余下部分,并返回到上一層函數(shù)(停住)。
Force Step Into
顧名思義:強制進(jìn)入。Force Step Into和Step Into的區(qū)別是:前者可進(jìn)入任何方法,后者只能進(jìn)入自定義方法or三方庫方法,官方庫(如JDK庫)是不能進(jìn)入的。如下的toString()方法使用Step Into是進(jìn)不去的,若想進(jìn)入只能使用Force Step Into。
老實說,大多數(shù)情況下Step Into就夠用了,F(xiàn)orce Step Into其實比較少用到。
Force Step Over
當(dāng)在使用Step Over的時候,執(zhí)行到函數(shù)時若內(nèi)部有斷點,則會停住。而若使用Force Step Over的話,無論此函數(shù)里面是否有斷點,略過直接執(zhí)行到下一行。
Tips:由于此功能不太常用,所以debug面板里沒按鈕,若需要就用快捷鍵觸發(fā)嘍。
Run to Cursor
這個快捷鍵筆者巨喜歡,非常非常方便。功能含義就是字面意思:程序執(zhí)行到光標(biāo)位置暫停。
它綁定了兩個快捷鍵,筆者習(xí)慣用后者:使用Mac的force touch簡直不要太香,所見即所得,體驗完美。
什么是force touch?點擊前往。
Evaluate
調(diào)試過程中,代碼中的變量值可以在窗口中直接看到,但是,有些是看不到的,比如:中間變量、表達(dá)式計算值。這時候就得祭出這個神器了:Evaluate Expression。
有一定開發(fā)經(jīng)驗的小伙伴一定都用過這個功能,既然這么常用,以后能用快捷鍵來提效嗎?
哦對了,當(dāng)你在輸入框里寫好語句想要執(zhí)行時,也無需使用鼠標(biāo)點擊右下角的Evaluate按鈕,按common + enter即可執(zhí)行(效果同點擊右下角的Evalute按鈕)。
說明:common + enter在Mac里是個常見快捷鍵組合,在很多場景里都代表Run、執(zhí)行、確定的含義。
Quick Evaluate
快速執(zhí)行(光標(biāo)選中的)表達(dá)式,就像這樣:
實話講,該快捷鍵在實際工作中比????更常用。根據(jù)筆者的經(jīng)驗,調(diào)試過程中大多數(shù)情況是執(zhí)行源代碼里已經(jīng)存在的表達(dá)式的值來查看,而需要自定義表達(dá)式的場景是比較少的,所以這個快捷鍵要記牢嘍。
說明:該功能綁定有兩個快捷鍵,各位按需食用,哪個順手就用哪個唄。
Resume Program
繼續(xù)執(zhí)行程序,直到遇到下一個斷點。換句話講,若后面再無斷點就執(zhí)行結(jié)束。該快捷鍵,筆者常用,有“放行”之意。
丟幀功能鍵:Drop Frame
功能直譯:丟(棧)幀。使用此功能:可以回退到之前的堆棧,就像將當(dāng)前棧幀給丟掉不要了一樣,效果就是如果調(diào)試過程中“錯過”了某個步驟想重來一次,使用它就可以重新進(jìn)入執(zhí)行。
在debug視窗里,可以看到當(dāng)前線程的調(diào)用堆棧:
說明:只有堆棧的數(shù)量>1時,Drop Frame按鈕才可使用,否則是灰色的。
這時點擊一次該按鈕,就會將棧頂?shù)倪@幀丟棄掉,就像這樣:
這樣子若想再執(zhí)行一次stringSize這幀就非常方便了,似乎有時光機的效果。
值得關(guān)注的是,Drop Frame這個功能IDEA默認(rèn)并沒有給快捷鍵,我覺得原因有二:
1、此功能使用上需要當(dāng)心,時光機可能也倒回不了真實的現(xiàn)場。
- 用技術(shù)語言解釋為:若丟掉的那一幀對上下文狀態(tài)(如全局變量、發(fā)送了消息、DB持久化了數(shù)據(jù)等等)做了更改,這種是不會撤銷的。而這,很可能導(dǎo)致再次執(zhí)行時的路徑不一樣,所以需要謹(jǐn)慎為之。
2、基于1的特點,IDEA覺得該功能使用的頻率不會太高,了解的程度也因人而異,所以默認(rèn)就不給綁定快捷鍵嘍
實話講,筆者使用該功能也很少,畢竟大多數(shù)情況下重新啟動新的線程來調(diào)試也不費多大事,但環(huán)境是干凈有保障的。
其它功能鍵
IDEA作為強大的集成開發(fā)環(huán)境,對于debug調(diào)試的支持更是強大,比如:丟幀功能、lamda表達(dá)式調(diào)試、stream流調(diào)試等等?,F(xiàn)在已是2022年,基本你想要的功能它都有,只是有些(不太常用)的默認(rèn)沒有綁定快捷鍵。
這些Action一般可通過右鍵、頂部菜單欄調(diào)出來,如下圖:
可根據(jù)個人習(xí)慣,覺得哪些是常用就綁定為自己習(xí)慣的快捷鍵組合就可以了。
總結(jié)
本文繼續(xù)介紹了IDEA Run運行和Debug調(diào)試相關(guān)的快捷鍵,希望在調(diào)試的路上能助你節(jié)約時間,提高逼格,離“高手”之路更近一步。