jdb(Java Debugger)是 JDK 提供的命令列除錯工具,支援本地與遠端除錯,適用於無 IDE 環境或自動化測試場景。透過文字介面控制程式執行、設定中斷點、檢查變數與呼叫堆疊。
jdb 類別名稱
# 目標端啟動
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 參數產生)stop in MyClass.myMethod if (arg0 > 100)(需 JDK 11+ 支援)print 反覆評估,或寫腳本自動化。jdb -source script.jdb 執行。use 路徑包含原始碼根目錄。run 或觸發類別載入再設中斷點。