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