你不知道的 IDEA Debug調(diào)試小技巧(小結(jié))
一、多線程調(diào)試斷點(diǎn)
Intellij IDEA
的debug
斷點(diǎn)調(diào)試是有一個(gè)模式的選擇的,就像下面這張圖,平時(shí)我們都使用的是默認(rèn)的 ALL
(在Eclipse
中默認(rèn)是線程模式) ,這種模式我們只能將一個(gè)線程斷下來,但其他線程卻已經(jīng)執(zhí)行過了;而將其改為 Thread
后,就可以多個(gè)線程都斷下來,并且可以很方便的切換線程的執(zhí)行流程,這就是多線程調(diào)試。
在debug
控制臺(tái)能夠很方便的查看線程的執(zhí)行狀態(tài),也可以很方便的選擇某個(gè)線程去執(zhí)行:
二、回退斷點(diǎn)
不知道大伙有沒有遇到這樣一個(gè)問題,當(dāng)我們進(jìn)行debug
時(shí),通常不會(huì)進(jìn)入某個(gè)方法一步一步的執(zhí)行,而是選擇性的跳過;當(dāng)你想要回頭觀察某個(gè)變量的值得變化時(shí),而你剛好沒有跟進(jìn)去,跳過了這個(gè)方法,這個(gè)時(shí)候,變量就被賦值了,我們通常的做法是重來一次。
其實(shí)IDEA的調(diào)試功能是非常強(qiáng)大的,我們來看看熟悉的調(diào)試窗口:
使用紅色框框出來的部分,表示當(dāng)前程序執(zhí)行到哪一塊,哪一部分,你可以嘗試用鼠標(biāo)點(diǎn)點(diǎn)看,你會(huì)發(fā)現(xiàn)編輯器會(huì)跳轉(zhuǎn)到對應(yīng)的代碼中,當(dāng)然當(dāng)前斷點(diǎn)的位置通常會(huì)在列表的第一條。然后我們使用右鍵單擊,你就可以看到如下圖所示:
或者你也可以在下圖中找到 Drop Frame
:
在IDEA中,所謂的回退,叫 Drop Frame
,選擇Drop Frame
后,程序會(huì)跳轉(zhuǎn)回調(diào)用當(dāng)前這個(gè)方法的地方,當(dāng)然已經(jīng)改變的值是不會(huì)恢復(fù)的。但是當(dāng)該方法再次被調(diào)用時(shí),你可以觀察到某個(gè)變量什么時(shí)候被改變,至少我們不用再去重新運(yùn)行一遍程序。
三、條件斷點(diǎn)
條件斷點(diǎn)就是當(dāng)滿足某個(gè)條件(通常是表達(dá)式)時(shí),debug
斷點(diǎn)才會(huì)生效;這在循環(huán)中debug
是非常有用的;例如我們想要在循環(huán)體中調(diào)試:當(dāng)某個(gè)變量滿足某個(gè)條件時(shí),需要斷點(diǎn)調(diào)試,來查看詳細(xì)的執(zhí)行流程及變化情況。
我們說過,IDEA
中的debug
功能是非常強(qiáng)大的,要使用條件斷點(diǎn)也非常簡單,下面這張圖片中 Condition
中的內(nèi)容代表當(dāng)name
為eamon:23
時(shí),程序執(zhí)行到斷點(diǎn)處停下來。
有了條件斷點(diǎn),這樣一來,那些不相關(guān)和我們不關(guān)心的代碼就可以直接跳過了。
四、臨時(shí)斷點(diǎn)
所謂臨時(shí)斷點(diǎn)就是只斷一次,IDEA
默認(rèn)斷點(diǎn)會(huì)一致存在。如果你只需要暫停一次,那么使用臨時(shí)斷點(diǎn)會(huì)比較方便,因?yàn)闀和R淮沃髷帱c(diǎn)就自動(dòng)消失了,不用手動(dòng)取消。
臨時(shí)斷點(diǎn)可以通過在打斷點(diǎn)時(shí)按住 Alt
或者 option
鍵,然后創(chuàng)建斷點(diǎn)。也可以通過右鍵斷點(diǎn)處,選擇 more
然后在窗口中選中 Remove once hit
五、求值計(jì)算
求值計(jì)算功能在我們debug
過程中,可以很方便的查看程序中所有變量的值,也可以臨時(shí)修改程序中變量的值,這個(gè)功能能在一定程度上輔助我們進(jìn)行代碼調(diào)試。
這個(gè)功能可以在debug
時(shí)在debug
窗口打開:
打開后是這樣的:
然后你就可以在表達(dá)式輸入框中,輸入你想要的操作,比如,查看變量、修改變量(臨時(shí)的)、調(diào)用某個(gè)方法等;這些操作結(jié)果將會(huì)在下方的Result
窗口中輸出。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 阿里云k8s集群使用ingress配置時(shí)間超時(shí)的參數(shù)
- idea快捷鍵生成getter和setter,有構(gòu)造參數(shù),無構(gòu)造參數(shù),重寫toString方式
- Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式
- idea為java程序添加啟動(dòng)參數(shù)的問題解析(program?arguments,vm?arguments,Environment?variable)并在程序中獲取使用
- IntelliJ?IDEA設(shè)置JVM運(yùn)行參數(shù)的圖文介紹
- IDEA中Debug調(diào)試VUE前端項(xiàng)目調(diào)試JS只需兩步
- 在IDEA中Debug調(diào)試VUE項(xiàng)目的詳細(xì)步驟
- idea 無法debug調(diào)試的解決方案
- Intellij IDEA Debug調(diào)試技巧(小結(jié))
- k8s部署的java服務(wù)添加idea調(diào)試參數(shù)的方法
相關(guān)文章
springboot3集成mybatis-plus報(bào)sqlSession異常的問題解決
springboot3已經(jīng)發(fā)布正式版,但是在集成mybatis-plus最新版3.5.2的時(shí)候發(fā)現(xiàn)提示異常,本文就來介紹一下報(bào)sqlSession異常的問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02idea項(xiàng)目全局去掉嚴(yán)格的語法校驗(yàn)方式
這篇文章主要介紹了idea項(xiàng)目全局去掉嚴(yán)格的語法校驗(yàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。2023-04-04Springboot關(guān)于自定義stater的yml無法提示問題解決方案
這篇文章主要介紹了Springboot關(guān)于自定義stater的yml無法提示問題及解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06在IDEA中創(chuàng)建跑得起來的Springboot項(xiàng)目
這篇文章主要介紹了在IDEA中創(chuàng)建跑得起來的Springboot項(xiàng)目的圖文教程,需要的朋友可以參考下2018-04-04SpringBoot項(xiàng)目Pom文件的基本配置方式
這篇文章主要介紹了SpringBoot項(xiàng)目Pom文件的基本配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06