debug技巧之本地除錯

sum墨發表於2024-05-09

大家好啊,我是summo,今天給大家分享一下我平時是怎麼除錯程式碼的,不是權威也不是教學,就是簡單分享一下,如果大家還有更好的除錯方式也可以多多交流哦。

如果看過我文章的同學應該知道我是一個Java開發,平時都是Spring全家桶。後端和前端雖說都是寫程式碼,但調程式碼的時候還是有點不同的,前端可以console.log一把梭,但是Java只用 System.out.println是不行的,原因也很簡單,“前端熱部署快,後端慢”,後端總是避不開斷點除錯的,如果還有沒學會斷點除錯的同學,建議還是學習一下。

好了,廢話不多說,開始正文~

本地除錯的方式主要看使用的IDE,我平時都是用的IDEA社群版,感覺比MyEclipse和Eclipse比較好用一些。

一、debug模式啟動應用

這個還是很簡單的,我相信只要不是手抖都不會點錯。但是有時候我們會發現平時很快就啟動好的應用,突然變得特別慢,好幾分鐘都啟動不好。一般出現這種情況的原因有可能是你將斷點打在了方法上,這個IDEA官方也有說明,如下。

Note that using method breakpoints can slow down the application you are debugging.
使用方法斷點會使得正在debug除錯的程式變慢。

解決辦法有兩個
a. 找到方法上斷點取消掉
b. 如果斷點不好找,直接找到IDEA的BreakPoints全部取消就好了

二、除錯功能

  • Resume Program(繼續程式):當程式處於暫停狀態時,點選這個按鈕會使得程式繼續執行,直到下一個斷點或者程式結束。
  • Step over(單步跳過):這個按鈕允許你執行當前行的程式碼,但是不會進入當前行呼叫的任何方法內部。如果當前行呼叫了一個方法,那麼這個方法的執行會“跳過”,直接執行到這個方法的返回處。
  • Step into(單步進入):與 Step over 不同,Step into 會進入當前行呼叫的方法內部。如果當前行是一個方法呼叫,那麼程式會暫停在這個方法的第一條可執行行。
  • Force Step into(強制單步進入):這個按鈕允許你強制進入一個方法,即使該方法的原始碼不可用(例如,它可能是一個第三方庫的一部分)。通常,當嘗試使用 Step into 進入一個沒有原始碼的方法時,IDEA 會忽略這個步驟。但是,使用 Force Step into 可以強制程式進入方法,即使沒有原始碼。
  • Step out(單步返回):當處於一個方法內部時,點選這個按鈕會使得程式執行完當前方法的剩餘部分,並在方法返回時暫停。這允許你快速退出當前的方法,返回到呼叫它的程式碼中。

這些除錯功能對於理解程式的執行流程和除錯程式中的錯誤非常有幫助。自己可以多試試。

三、 Evaluate Expression

這個功能是我用的最多的,非常好用,強烈推薦!!!

1. 它在哪?

進入debug後,程式碼區右鍵開啟選單

2. 它長啥樣?

上面是輸入框,下面是輸出

3. 它有什麼作用?

  • 檢視變數值
  • 修改變數值
  • 執行方法
  • 檢視複雜資料結構
  • 除錯資訊輸出
  • ... ...
    不僅上面這些,它甚至可以寫一段新的程式碼執行,我演示幾個吧,不然沒感覺。

(1)檢視變數值


(2)執行方法


(3)新的程式碼塊

四、小結一下

除錯Java程式,用IDEA社群版挺方便的。設定斷點的時候別太隨意,否則啟動程式會慢得跟蝸牛似的。用好單步除錯,能幫你一步步看清楚程式是怎麼跑的。還有那個表示式評估,簡直就是除錯時的萬能鑰匙,啥都能幹。最後,記得多學多練,除錯這門手藝,越磨越亮。

相關文章