首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 命令列除錯工具 jdb 完整指令參考與實戰技巧

     編輯:Java 相關知識

jdb 除錯器簡介

jdb(Java Debugger)是 JDK 提供的命令列除錯工具,支援本地與遠端除錯,適用於無 IDE 環境或自動化測試場景。透過文字介面控制程式執行、設定中斷點、檢查變數與呼叫堆疊。

啟動方式

本地除錯

jdb 類別名稱

遠端除錯(需目標 JVM 啟用 -agentlib:jdwp)

# 目標端啟動
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000 MyApp

# jdb 連線
jdb -attach 8000
# 或
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8000

核心指令分類表

類別指令功能
執行控制run [args]開始執行已載入的類別
cont從中斷點繼續執行
step單步執行(進入方法)
next單步執行(不進入方法)
中斷點管理stop at 類別:行號在指定行設定中斷點
stop in 類別.方法在方法進入點設定中斷點
clear 類別:行號清除中斷點
catch 類別ID特定例外發生時中斷
資料檢查print ID列印物件或欄位值
dump ID顯示物件所有資訊
locals顯示當前堆疊幀的區域變數
methods 類別ID列出類別的方法集合
堆疊與執行緒where [執行緒ID|all]顯示呼叫堆疊
up/down [n]上下移動堆疊幀
threads [群組]列出執行緒
thread 執行緒ID切換當前執行緒
類別與原始碼classes列出已知類別
list [行號]顯示原始碼
use [路徑]設定/顯示原始碼搜尋路徑
系統與其他memory回報記憶體使用情況
help / ?列出所有指令
exit / quit離開除錯器

遠端除錯連線參數

  • -host 主機名:指定遠端 JVM 主機
  • -password 密碼:連線驗證密碼(由目標 JVM 的 -agentlib 參數產生)

實戰技巧

  1. 條件中斷點:stop in MyClass.myMethod if (arg0 > 100)(需 JDK 11+ 支援)
  2. 監看表達式:使用 print 反覆評估,或寫腳本自動化。
  3. 自動化腳本:將指令寫入檔案,用 jdb -source script.jdb 執行。
  4. 搭配 IDE:IntelliJ/Eclipse 遠端除錯體驗更佳,jdb 適合伺服器無圖形環境。

常見問題

  • 找不到原始碼:確認 use 路徑包含原始碼根目錄。
  • 無法連線遠端:檢查防火牆、JDWP 參數、IP/port 正確性。
  • 類別未載入:先執行 run 或觸發類別載入再設中斷點。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved