如何运行jdb命令调试Java程序
- 主机动态
- 2025-05-29
- 10
JDB(Java Debugger) 是JDK(Java Development Kit)自带的调试工具,用于对Java程序进行断点调试、变量监控等操作,本文将以通俗易懂的方式,从零开始讲解如何运行JDB命令,并提供实际案例和常见问题解答。
运行JDB的前置条件
-
安装JDK
- 访问Oracle JDK官网或OpenJDK官网,下载并安装适合操作系统的JDK版本(推荐JDK 8及以上)。
- 安装完成后,通过终端(Linux/macOS)或命令提示符(Windows)输入以下命令确认安装成功: java -version
javac -version
若正确显示版本号,则安装完成。
-
配置环境变量

- 确保JAVA_HOME环境变量指向JDK安装路径,并将%JAVA_HOME%bin添加到系统PATH中(具体配置方法因操作系统而异)。
运行JDB的完整步骤
步骤1:编译Java程序时生成调试信息
在调试前,需用-g参数编译Java文件以生成调试信息:
javac -g HelloWorld.java
这会生成一个包含调试信息的.class文件。
步骤2:启动JDB调试器
通过以下命令启动JDB并指定要调试的类:

若需调试远程JVM进程,可使用:
jdb -attach <远程地址>:<端口号>
步骤3:常用JDB命令
| 命令 | 功能描述 | 示例 |
|---|---|---|
| stop at <类名>:<行号> | 在指定行设置断点 | stop at HelloWorld:5 |
| run | 启动程序 | |
| step | 逐行执行(进入方法内部) | |
| next | 逐行执行(不进入方法) | |
| print <变量> | 打印变量值 | print x |
| cont | 继续执行到下一个断点或结束 | |
| quit | 退出调试器 |
步骤4:调试流程示例
- 设置断点:stop at HelloWorld:5
- 启动程序:run
- 单步执行:next 或 step
- 查看变量:print x
- 继续执行:cont
实际调试案例
假设有一个HelloWorld.java文件:
public class HelloWorld { public static void main(String[] args) { int x = 10; System.out.println("x的值是:" + x); // 第3行 x += 5; // 第4行 System.out.println("x的新值是:" + x); // 第5行 } }
调试过程:
- 编译代码:javac -g HelloWorld.java
- 启动JDB:jdb HelloWorld
- 在第3行设置断点:stop at HelloWorld:3
- 输入run运行程序,程序停在断点处。
- 输入print x查看变量值(此时x=10)。
- 输入cont继续执行,观察最终输出结果。
注意事项
- 断点设置失败:检查编译时是否使用了-g参数,确保调试信息已生成。
- 找不到类文件:确认类路径正确,或使用-classpath参数指定路径。
- JDB与IDE的区别:JDB是命令行工具,适合轻量调试;复杂项目推荐使用IntelliJ IDEA或Eclipse。
常见问题解答
Q1:JDB提示“无法找到源文件”?
A:需确保.java文件与.class文件在同一目录,或通过use命令指定源码路径:

use /path/to/source
Q2:如何逐行执行并查看堆栈?
A:使用step逐行进入方法,输入where查看当前堆栈帧。
Q3:如何调试已运行的Java进程?
A:启动程序时添加调试参数:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 HelloWorld
然后通过JDB连接:
jdb -attach 5005
JDB是Java开发者排查代码问题的利器,尤其适合无图形界面的环境,掌握基础命令后,可快速定位逻辑错误,对于更复杂的调试需求,可结合IDE工具提升效率。
引用说明 参考自:
- Oracle官方文档《JDK工具手册》
- OpenJDK调试指南《Debugging with JDB》