JBuilder 9 編輯器能以紅點標記語法錯誤,但邏輯錯誤、運行時異常、性能瓶頸只能通過調試器暴露。掌握斷點策略、單步控制、堆棧分析與方法追蹤,是從「代碼能跑」邁向「代碼健壯」的關鍵。
JBuilder 支持 5 類核心斷點,不同調試器支持程度不同:
| 類型 | 觸發條件 | 適用場景 |
|---|---|---|
| 行斷點 | 執行到指定行前 | 最常用,針對具體代碼行 |
| 方法斷點 | 進入/退出指定方法 | 無源碼庫、第三方庫、關注方法調用鏈 |
| 異常斷點 | 拋出特定異常 | 捕獲被吞沒的異常、定位 NPE 根因 |
| 計數斷點 | 計數器達到閾值 | 循環第 N 次失效、間歇性 Bug |
| 變量監視斷點 | 指定內存地址變化 | 多線程共享變量競態、內存損壞 |
注意:地址斷點、類斷點等高級類型通常僅在 JIT 編譯代碼(非 javac 解釋代碼)上生效,具體以調試器文檔為準。
main() 入口設置行斷點,單步進入核心流程同一類/方法可設置多個斷點,組合使用效果最佳。
組合鍵:Ctrl+Shift+F7 強制進入、Ctrl+F8 運行到游標處。
Java 程序崩潰時自動輸出堆棧跟蹤(含類名、方法名、行號,需 -g 編譯)。手動強制生成兩大法寶:
// 1. 當前線程完整堆棧
new Throwable().printStackTrace();
// 2. 僅當前線程快照
Thread.currentThread().dumpStack();
實戰技巧:在文件拷貝驗證失敗處插入強制堆棧,對比成功/失敗路徑差異,快速定位邏輯分支錯誤。
Runtime.traceMethodCalls(true/false) 可開啟/關閉 JVM 級別方法調用日誌,輸出每條字節碼指令調用。警告:輸出量極大,僅在極小代碼範圍、極短時間內使用,否則導致系統假死。配合 grep/awk 分析熱點方法調用頻次。
list.size() > 0、user.getAddress().getCity())-g 保留行號/局部變量表java.lang.NullPointerException、java.lang.Exception 捕獲所有未處理異常-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000i == 100 && user != null