命令行调试更轻、更适合 SSH / 无头环境 / 远程机。现代 IDE 图形调试很强,但服务器上往往只有终端。下文对比各语言常用 CLI 调试器,并给出最小可用示例。
调试器对比
| 语言 | 调试器 | 安装 | 代码内断点 | 步入 / 步过 | 打印变量 | 备注 |
|---|---|---|---|---|---|---|
| Python | pdb / ipdb | 内置 / pip install ipdb | breakpoint() | s / n | p expr | ipdb 体验更好 |
| JavaScript (Node) | node inspect | 内置 | debugger; | step / next | repl 模式 | 也可用 --inspect-brk + Chrome |
| Java | jdb | JDK 内置 | 命令行 stop at | step / next | print var | 需 javac -g |
| C / C++ | gdb | 系统包 | break file:line | s / n | p var | bt 看调用栈 |
| Go | dlv (Delve) | go install .../dlv@latest | break main.go:10 | s / n | p var | 支持 goroutine |
| PHP | Xdebug 3+ | pecl / 包管理器 | 环境变量触发 | 依赖客户端 | 依赖客户端 | 纯 CLI 需 dbgp 客户端 |
| Ruby | debug / byebug | 内置 / gem | binding.break / byebug | step / next | p var | Ruby 3+ 推荐 debug |
| Rust | rust-gdb / rust-lldb | 工具链 | break main.rs:10 | s / n | p var | 用 wrapper 打印类型更友好 |
推荐
- 日常开发:优先 IDE;上服务器或 CI 排错再用本文 CLI 方案。
- Python:
breakpoint()+ ipdb;Go:dlv(别硬上 gdb);Rust/macOS:rust-lldb,Linux:rust-gdb。
常用命令速查
| 操作 | Python (pdb) | Node (inspect) | gdb / dlv | jdb |
|---|---|---|---|---|
| 继续 | c | cont | c / continue | cont |
| 下一行 | n | next | n / next | next |
| 步入 | s | step | s / step | step |
| 打印 | p expr | repl 后输入 | p var | print var |
| 退出 | q | Ctrl+C 两次 | q | exit |
Python — pdb / ipdb
def add(x, y):
breakpoint() # Python 3.7+,等同 pdb.set_trace()
return x + y
add(1, 2)
python script.py
# 或:python -m pdb script.py
常用:n 下一行、s 步入、c 继续、p expr 打印、l 列代码、q 退出。
JavaScript (Node) — node inspect
function add(x, y) {
debugger;
return x + y;
}
add(1, 2);
node inspect script.js
暂停后用 repl 查变量(Ctrl+C 退出 REPL)。图形化:node --inspect-brk script.js,Chrome 打开 chrome://inspect。
Java — jdb
javac -g Main.java
jdb Main
# (jdb) stop at Main:6
# (jdb) run
常用:cont、next、step、print <var>。
C++ — gdb
g++ -g main.cpp -o main
gdb main
# (gdb) break main.cpp:10
# (gdb) run
常用:n / s / c / p var / bt(栈回溯)。
Go — dlv
go install github.com/go-delve/delve/cmd/dlv@latest
dlv debug main.go
# (dlv) break main.go:10
# (dlv) continue
常用:b 断点、c 继续、n / s、p 打印;goroutines 看协程。
PHP — Xdebug
php.ini 示例(Xdebug 3+):
zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.start_with_request=yes
php -d xdebug.mode=debug script.php
纯终端需配合 dbgp 客户端或 IDE 监听;CLI 场景不如其他语言顺手。
Ruby — debug / byebug
def add(x, y)
binding.break # Ruby 3+;或 byebug
x + y
end
常用:next、step、continue、p var。
Rust — rust-gdb / rust-lldb
cargo build
rust-gdb target/debug/your_program # Linux 常用
# macOS: rust-lldb target/debug/your_program
# (gdb) break main.rs:10
# (gdb) run
命令与 gdb/lldb 一致;wrapper 能更好显示 Rust 类型。