jdb 是一个简单的命令行调试器,可以调试本地或远程 Java Virtual Machine。jdb [ options ] [ class ] [ arguments ]
options 命令行参数
class 调试的类名称
arguments main函数的参数
1. 开始调试有两种方式启动调试,一个是新启动一个 JVM 加载指定的类,然后在开始执行指令时停止;另一个是连接到一个正在运行的 JVM。具体方法如下。(1) C:\> jdb MyClass
(2) C:\> java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClass C:\> jdb -attach jdbconn
2. jdb 基本操作命令help, or ? 显示帮助信息
run [class [args]] 执行 main 方法
threads 列出正在运行的线程
thread 设置默认线程
where 转储线程堆栈
print 显示Java对象(简短描述)或原始数据类型值,若要显示本地变量在编译时需添加 -g 参数
print 支持简单的Java表达式,如下:
print MyClass.myStaticField
print myObj.myInstanceField
print i + j + k (i, j, k are primities and either fields or local variables)
print myObj.myMethod() (if myMethod returns a non-null)
print new java.lang.String("Hello").length()
dump 原始类型打印值,对象打印每个字段(静态和实例)的当前值,同print也支持表达式
locals 输出当前栈帧本地变量
classes 列出当前已知的类
class 显示类详细信息
methods 列出类方法
fields 列出类字段
stop in .[(argument_type,...)] 在方法中设置断点
stop at : 在某一行设置断点
stop at MyClass:22 (在 MyClass 第22行设置断点)
stop in java.lang.String.length (在String.length方法设置断点)
stop in MyClass. (MyClass 构造函数)
stop in MyClass. (MyClass 静态块初始化方法)
clear .[(argument_type,...)] 清除一个方法的断点
clear : 清除某一行断点
clear 列出所有断点
step 执行到下一行
next 执行当前栈帧下一行
cont 从断点处继续执行
exit 退出
3. 命令行选项# jdb 也识别许多java命令选项,如-D,-classpath,-X(非标准 VM 选项)
-help 显示帮助信息
-sourcepath