`

JAVA-JDK调试器之JDB

阅读更多

使用调试器JDB

JDK包含一个基于命令行方式的调试器-jdb . public class YY{

public class YY{
	Integer i = null;
	public YY(){}
	public static void main(String[] args){
		String mm = null;
		System.out.println(mm.length());		
			
	}
}
$java YY
Exception in thread "main" java.lang.NullPointerException
	at YY.main(YY.java:5)
$ jdb YY
正在初始化 jdb...
> run
运行 YY
设置 未捕捉到 java.lang.Throwable
设置延迟的 未捕捉到 java.lang.Throwable
> 
VM 已启动: 
出现异常:java.lang.NullPointerException(未捕捉)"thread=main", YY.main(), line=5 bci=6
5    		System.out.println(mm.length());		

main[1] 
main[1] print i
com.sun.tools.example.debug.expr.ParseException: Name unknown: i
 i = null
main[1] print YY.i
com.sun.tools.example.debug.expr.ParseException: No static field or method with the name i in YY
 YY.i = null
main[1] list
1    public class YY{
2    	public YY(){}
3    	public static void main(String[] args){
4    		String mm = null;
5 => 		System.out.println(mm.length());		
6    		int i=0;
7    		if(args.length==1){
8    			i = Integer.parseInt(args[0]);		
9    		}
10    		assert i>0:"param error";
main[1] help
** 命令列表 **
connectors                -- 列出此 VM 中可用的连接器和传输器

run [类 [参数]]        -- 开始执行应用程序的主类

threads [线程组]     -- 列出线程
thread <线程 ID>        -- 设置默认线程
suspend [线程 ID]    -- 暂停线程(默认值为 all)
resume [线程 ID]     -- 恢复线程(默认值为 all)
where [<线程 ID> | all] -- 转储线程的堆栈
wherei [<线程 ID> | all] -- 转储线程的堆栈以及 pc 信息
up [n 帧]             -- 向上移动线程的堆栈
down [n 帧]           -- 向下移动线程的堆栈
kill <线程 ID> <表达式>   -- 中止具有给定的异常对象的线程
interrupt <线程 ID>     -- 中断线程

print <表达式>              -- 输出表达式的值
dump <表达式>               -- 输出所有对象信息
eval <表达式>               -- 计算表达式的值(与 print 作用相同)
set <lvalue> = <表达式>     -- 为字段/变量/数组元素指定新值
locals                    -- 输出当前堆栈帧中的所有本地变量

classes                   -- 列出当前已知的类
class <类 ID>          -- 显示已命名类的详细信息
methods <类 ID>        -- 列出类的方法
fields <类 ID>         -- 列出类的字段

threadgroups              -- 列出线程组
threadgroup <名称>        -- 设置当前线程组

stop in <类 ID>.<方法>[(参数类型,...)]
                          -- 在方法中设置断点
stop at <类 ID>:<行> -- 在行中设置断点
clear <类 ID>.<方法>[(参数类型,...)]
                          -- 清除方法中的断点
clear <类 ID>:<行>   -- 清除行中的断点
clear                     -- 列出断点
catch [uncaught|caught|all] <类 ID>|<类模式>
                          -- 出现指定的异常时中断
ignore [uncaught|caught|all] <类 ID>|<类模式>
                          -- 对于指定的异常,取消 'catch'
watch [access|all] <类 ID>.<字段名>
                          -- 监视对字段的访问/修改
unwatch [access|all] <类 ID>.<字段名>
                          -- 停止监视对字段的访问/修改
trace [go] methods [thread]
                          -- 跟踪方法的进入和退出。
                          -- 除非指定 'go',否则所有线程都将暂停
trace [go] method exit | exits [thread]
                          -- 跟踪当前方法的退出或所有方法的退出
                          -- 除非指定 'go',否则所有线程都将暂停
untrace [方法]         -- 停止跟踪方法的进入和/或退出
step                      -- 执行当前行
step up                   -- 执行到当前方法返回其调用方
stepi                     -- 执行当前指令
next                      -- 跳过一行(跨过调用)
cont                      -- 从断点处继续执行

list [line number|method] -- 输出源代码
use(或 sourcepath)[源文件路径]
                          -- 显示或更改源路径
exclude [<类模式>, ...|“无”]
                          -- 不报告指定类的步骤或方法事件
classpath                 -- 从目标 VM 输出类路径信息

monitor <命令>         -- 每次程序停止时执行命令
monitor                   -- 列出监视器
unmonitor <监视器号>      -- 删除某个监视器
read <文件名>           -- 读取并执行某个命令文件

lock <表达式>               -- 输出对象的锁信息
threadlocks [线程 ID]   -- 输出线程的锁信息

pop                       -- 弹出整个堆栈,且包含当前帧
reenter                   -- 与 pop 作用相同,但重新进入当前帧
redefine <类 ID> <类文件名>
                          -- 重新定义类代码

disablegc <表达式>          -- 禁止对象的垃圾回收
enablegc <表达式>           -- 允许对象的垃圾回收

!!                        -- 重复执行最后一个命令
<n> <命令>             -- 将命令重复执行 n 次
# <命令>               -- 放弃(不执行)
help(或 ?)               -- 列出命令
version                   -- 输出版本信息
exit(或 quit)            -- 退出调试器

<类 ID>: 带有软件包限定符的完整类名
<类模式>: 带有前导或后缀通配符 (*) 的类名
<线程 ID>: 'threads' 命令中所报告的线程号
<表达式>: Java(TM) 编程语言表达式。
支持大多数常见语法。

可以将启动命令置于 "jdb.ini" 或 ".jdbrc" 之中
(两者位于 user.home 或 user.dir 中)
main[1] exit
 

 

分享到:
评论

相关推荐

    java-jdk1.8-jdk-8u202-linux-x64.zip

    JDK(Java Development Kit)包含了开发和运行Java应用程序所需的所有工具和库,包括Java虚拟机(JVM)、编译器(javac)、类库以及调试器(jdb)等。这个版本的编号为8u202,"u"代表更新(update),意味着它是Java...

    jdk1.8 java官网正式版Windows 64位-jdk-8u202-windows-x64.exe

    JRE是运行Java应用程序所必需的,而开发工具则包含编译器(javac)、调试器(jdb)、性能分析工具(jvisualvm)以及其他用于开发和测试Java应用的工具。 "READ.txt"文件可能包含安装指南或许可协议等重要信息,用户...

    Java- JDK8-各平台安装包

    Java JDK是Java Standard Edition(SE)的一部分,它包含Java Runtime Environment(JRE),用于运行Java程序,还包括Java编译器(javac)、Java文档生成器(javadoc)以及各种工具,如JVM调试器(jdb)和性能分析器...

    JAVA-jdk手册

    6. **Java调试器(jdb)**:这是一个简单的命令行调试器,用于查找和修复Java程序中的错误。它允许开发者设置断点、单步执行代码、检查变量值等。 7. **Java可视化工具集(JConsole、VisualVM等)**:这些工具提供...

    java-jdk6-windows

    同时,JDK 6的调试器(JDB)和性能分析工具(VisualVM)可以帮助定位问题并优化代码性能。 总的来说,"java-jdk6-windows"是Windows用户进行Java开发的重要资源,它提供了开发和运行Java应用所需的全部工具。通过...

    java-jdk1.7.0_80

    6. **Java调试器(jdb)**:用于调试Java程序,查找和修复错误。 7. **Java性能分析工具(jconsole、jvisualvm等)**:帮助开发者监控和分析Java应用的性能。 8. **Java Mission Control (JMC)**:一套高级的诊断...

    java-jdk1.8

    7. **Java调试器** (jdb):用于查找和修复Java程序中的错误。 8. **其他工具**:如appletviewer(用于运行Applet)、apt(注解处理工具)、orbd(对象请求代理)、rmic(远程方法接口编译器)等。 在安装"jdk_8.0....

    Java-JDK数据库系统开发Web开发源码

    JDK则是Java的开发工具包,包含了编译器(javac)、解释器(java)、调试器(jdb)以及一系列用于开发、测试和部署Java应用的工具。 在Web开发中,Java通常与Servlet和JSP(JavaServer Pages)一起使用,创建动态...

    java-jdk-1.8.0_131-64位linux版

    它包含了Java编译器(javac)、Java虚拟机(JVM)、Java调试器(jdb)以及一系列用于处理Java应用程序的工具。 1. **Java JDK**:Java Development Kit,简称JDK,是Java语言的软件开发工具包,是Java开发的核心。...

    Java-jdk-1.7.0_80

    5. **Java调试器(jdb)**:用于调试Java程序,查找和修复错误。 6. **Java性能分析器(jvisualvm)**:提供了一个图形界面来监视和分析Java应用程序的性能,包括内存使用、线程活动和CPU消耗。 7. **Java运行时...

    java-jdk-18.0.2.1jar包下载

    - **开发者工具**:如javadoc(生成API文档)、jconsole(监控Java应用)、jdb(调试器)、jmap(内存映射工具)等。 - **Java动态链接库**:包括各种库文件,如JRE(Java Runtime Environment)所需的基础库。 3...

    OpenJDK8U-jdk_x64_linux_hotspot_8u265b01.tar.gz

    它包含JRE(Java运行环境)和JDK(Java开发工具包),JDK除了JRE之外,还包含了用于编译、调试和分析Java程序的工具,如javac(Java编译器)、javadoc(文档生成器)和jdb(Java调试器)。 此压缩包中的"jdk8u265-...

    OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.10_9.tar.gz

    aarch64_linux_hotspot_11.0.10_9.tar.gz后,你会得到一个名为jdk-11.0.10+9的目录,其中包含了OpenJDK的所有组件,如JRE(Java Runtime Environment)和JDK工具,如javac编译器、javadoc文档生成器、jdb调试器等。...

    OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.zip

    在JDK 8中,主要的工具包括javac编译器、jar打包工具、javadoc文档生成器以及jdb调试器等。 OpenJDK 8是Java 8的重要版本,引入了许多新特性,如Lambda表达式、函数式接口、Stream API、默认方法、改进的日期和时间...

    java-7-openjdk-amd64.tar.gz

    JDK包含了Java运行时环境(JRE)以及开发Java应用程序所需的工具,如编译器(javac)、调试器(jdb)和文档生成器(javadoc)等。 OpenJDK 7的特性包括: 1. **多线程改进**:例如,引入了Fork/Join框架,可以更...

    window-jdk-jdk1.6.0_06

    它包括Java编译器(javac),Java运行时环境(JRE),以及各种工具,如Javadoc(用于生成API文档)和JDB(Java调试器)。 在压缩包文件名称列表中: 1. README_zh_CN.html:这是中文版的阅读指南,通常包含了安装...

    java-jdk8.0压缩包

    6. **Java调试器**(jdb): jdb是Java的调试工具,它可以帮助开发者查找并修复程序中的错误,设置断点,查看变量值,单步执行代码等。 7. **Java Archive工具**(jar): jar命令用于创建、管理和提取Java归档...

    loongson_openjdk8.1.5-jdk8u252b09-linux-loongson3a.tar.gz

    压缩包内的“j2sdk-image”文件,通常包含Java Software Development Kit (SDK)的所有组成部分,包括Java编译器(javac)、Java运行时环境(JRE)、Java文档生成器(javadoc)、Java调试工具(jdb)等,以及各种库和头文件,...

    OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz

    - `jdb`是Java的调试器,可以用来查找和修复代码中的错误。 - `jconsole`和`jvisualvm`提供性能监控和分析工具。 **JVM调优**: - 使用JVM参数(如-Xms, -Xmx设置堆内存大小,-XX:+UseG1GC选择垃圾收集器)来优化...

    JDK安装包 --jdk1.8.0_251.rar

    JDK 1.8.0_251是Java 8的一个特定更新版本,它包含了Java编译器、Java运行时环境(JRE)、Java类库以及各种开发工具,如Java调试器(JDB)和Java文档生成器(Javadoc)。这个压缩包文件"jdk1.8.0_251.rar"就是JDK ...

Global site tag (gtag.js) - Google Analytics