你不知道的 IDEA Debug除錯小技巧

2022-08-25 10:36:20 字數 2280 閱讀 2709

intellij ideadebug斷點除錯是有乙個模式的選擇的,就像下面這張圖,平時我們都使用的是預設的all(在eclipse中預設是執行緒模式) ,這種模式我們只能將乙個執行緒斷下來,但其他執行緒卻已經執行過了;而將其改為thread後,就可以多個執行緒都斷下來,並且可以很方便的切換執行緒的執行流程,這就是多執行緒除錯。

debug控制台能夠很方便的檢視執行緒的執行狀態,也可以很方便的選擇某個執行緒去執行:

不知道大夥有沒有遇到這樣乙個問題,當我們進行debug時,通常不會進入某個方法一步一步的執行,而是選擇性的跳過;當你想要回頭觀察某個變數的值得變化時,而你剛好沒有跟進去,跳過了這個方法,這個時候,變數就被賦值了,我們通常的做法是重來一次。

其實idea的除錯功能是非常強大的,我們來看看熟悉的除錯視窗:

使用紅色框框出來的部分,表示當前程式執行到哪一塊,哪一部分,你可以嘗試用滑鼠點點看,你會發現編輯器會跳轉到對應的**中,當然當前斷點的位置通常會在列表的第一條。然後我們使用右鍵單擊,你就可以看到如下圖所示:

或者你也可以在下圖中找到drop frame

在idea中,所謂的回退,叫drop frame,選擇drop frame後,程式會跳轉**用當前這個方法的地方,當然已經改變的值是不會恢復的。但是當該方法再次被呼叫時,你可以觀察到某個變數什麼時候被改變,至少我們不用再去重新執行一遍程式。

條件斷點就是當滿足某個條件(通常是表示式)時,debug斷點才會生效;這在迴圈中debug是非常有用的;例如我們想要在迴圈體中除錯:當某個變數滿足某個條件時,需要斷點除錯,來檢視詳細的執行流程及變化情況。

我們說過,idea中的debug功能是非常強大的,要使用條件斷點也非常簡單,下面這張中condition中的內容代表當nameeamon:23時,程式執行到斷點處停下來。

有了條件斷點,這樣一來,那些不相關和我們不關心的**就可以直接跳過了。

所謂臨時斷點就是只斷一次,idea預設斷點會一致存在。如果你只需要暫停一次,那麼使用臨時斷點會比較方便,因為暫停一次之後斷點就自動消失了,不用手動取消。

臨時斷點可以通過在打斷點時按住alt或者option鍵,然後建立斷點。也可以通過右鍵斷點處,選擇more然後在視窗中選中remove once hit

求值計算功能在我們debug過程中,可以很方便的檢視程式中所有變數的值,也可以臨時修改程式中變數的值,這個功能能在一定程度上輔助我們進行**除錯。

這個功能可以在debug時在debug視窗開啟:

開啟後是這樣的:

然後你就可以在表示式輸入框中,輸入你想要的操作,比如,檢視變數、修改變數(臨時的)、呼叫某個方法等;這些操作結果將會在下方的result視窗中輸出。

你不知道的 IDEA Debug除錯小技巧 小結

一 多執行緒除錯斷點 intellij idea的debug斷點除錯是有乙個模式的選擇的,就像下面這張圖,平時我們都使用的是預設的all 在eclipse中預設是執行緒模式 這種模式我們只能將乙個執行緒斷下來,但其他執行緒卻已經執行過了 而將其改為thread後,就可以多個執行緒都斷下來,並且可以很...

不知道不知道

函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...

不知道不知道

函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...