Java程序调试工具——jdb
一般继承开发环境(IDE)都提供了设置断点和单步跟踪的功能,也就是程序员常说的·Debug(调试)能力。
其实JDK在自己的bin目录下边也有这样一套工具——jdb帮我们完成调试。
这里给出一个简单的程序“Hello.java”
1 public class Hello
2 {
3 public static void main(String[] args)
4 {
5 String greeting="Hello WindowsUtils!";
6 System.out.println(greeting);
7 }
8 }
首先使用javac -g Hello.java
编译类文件,
这里要说的是javac -g Hello.java 是为了在调试阶段获取变量信息,多一个“-g”。
使用DOS命令却换到Hello.class文件所在的目录,(假设是F:\Hello.class)不是很清楚的可以参考下边,懂得可以直接跳过这部分:
cmd进入DOS窗口
进行如图
(f:中的大小写都一样)
这是就可以
jdb Hello命令进入到jdb的交互环境并同时把类文件加载进来。
如图操作
(1)、首先使用stop at Hello:5在第五行设置断点,
(2)、再run运行,这时就在断点处停住了,
(3)、这时用locals显示变量(本地变量为空,还没运行到那里),
(4)、step(或者next)单步进入,能看到从第五步运行到第六步,
(5)、再step(或者next)接着运行到第七步,也就是第六步完成,输出“Hello WindowsUtils! ”字符串,
(6)、cont表示执行完程序余下的部分并退出jdb环境。
当然也可以使用list命令吧源码输出一次,看看是否是自己的源文件。
如图
这些就是我们调试最常用的命令的使用场景。jdb的常用的命令远不止这几个,最后我再列出常用(除了上边的)的命令:
exit(或quit): 退出调试器
help(或?): 列出所有命令
ignore classID: 忽略特定的异常接口
load classname: 载入要调试的Java类
methods classID : 列出一个类的成员方法集
print ID[ID…]: 打印变量值
dump ID: 打印变量的详细信息
resume [threadID …]: 恢复线程(默认情况下回复所有线程)
suspend[threadID…]: 停止一个线程(默认情况下停止所有线程)
当然你也可以查看官方文档,更加详细了
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html(jdb7官方文档)
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr011.html#BABGIEHH(jdb8官方文档)
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/introclientissues005.html(以及同样很重要的dk8中的JDWP官方文档)
Java程序调试工具——jdb相关推荐
- 【Java可执行命令】(六)调试工具 jdb:深入解析应用程序调试工具jdb ~
Java可执行命令详解之jdb 1️⃣ 概念 2️⃣ 优势和缺点 3️⃣ 使用 3.1 语法格式 3.1.1 参数:-sourcepath < path> 3.1.2 指令:run [cl ...
- 使用JDB调试Java程序
使用JDB调试Java程序 1.使用JDK的JDB工具附加调试Java程序 首先用以下命令启动Java程序: java -Xdebug -Xrunjdwp:transport=dt_socket,se ...
- JDB附加调试线上JAVA程序
前面介绍过用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场环境中通常没有安装Eclipse,这时候就可以用jdb来附加进程调试了. 1)首先要保证使用以下命令启动JA ...
- jdb java_利用JDB附加调试JAVA程序 | 学步园
之前有介绍用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场JAVA程序出现异常,又不能在现场真实环境装Eclipse来调试,所幸有JDB这个工具.此工具的常规用法不介 ...
- 用java实现一个计算器程序_1.2第一个java程序——hello world
第一个java程序--hello world 实现一个java程序,主要有三个步骤:1.编写源代码,2.编译源代码,3.运行.java的源代码必须先编译,然后才能由JVM解析执行.所以我们程序员第一步 ...
- java的调试工具_2020年最佳Java调试工具(翻译)
调试是应用程序开发周期不可或缺的一部分.用Java或任何其他语言编写程序时,每个开发人员应解决的首要问题之一是可靠的调试工具的可用性. 所使用的工具类型可能影响或破坏应用程序的调试过程,因此至关重要的 ...
- java程序_Java程序员必备----Java命令大全
1.java.exe: ====================== 运行java程序,这个相信每一位用Java的人知道了.2.javac.exe: ====================== 编译 ...
- Java程序常用工具
添加网址超链接后,博客无法发布,会出现以下问题: 因此,本文的所有网址都取消了超链接,同时将网址协议的"http://"也给取消了,如果无法访问,添加上该协议即可. Java7的所 ...
- java调试器jdb_Java调试教程-Java调试器(JDB)概述
Java调试教程-Java调试器(JDB)概述 (2010-12-24 10:44:44) 标签: 杂谈 摘要 虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点.最重要 ...
最新文章
- mysql 修复_修复崩溃的Mysql
- idea +springMVC搭建项目,新建各种文件基础
- Python 之 super MRO (没有遇到过适用场景)
- JVM插码之五:Java agent+ASM实战--监控所有方法执行时间
- keil5图标变成白色_电脑桌面图标全部变成白色的解决办法
- vscode生成vue模板快捷键_VSCode一键生成.vue模版
- SAP License:生产订单无目标成本解决办法
- python 菜鸟-Python3 列表
- 离线环境安装dotnet framework nuget包
- js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
- Hugging Face Course-Diving in 抱抱脸 Datasets library
- 【java】解决安装时时显示this version of the jdk is already installed……
- win7修改驱动inf,驱动非官方美加狮XBOX360手柄
- 使用sysprep.exe遇到windows无法完成系统配置。若要尝试恢复配置,请重新启动计算机
- Nicolas Bourbaki 是何许人也,下一个中本聪?
- BI工具和报表工具有什么不同
- 分享史上Java最牛逼,最简短的代码
- 推荐系统系列:新浪搜索团队FiBiNET理论和代码实现
- 华为8c系统语言切换,华为荣耀畅玩8C双清教程_怎么清理缓存和恢复出厂设置
- Unity之JSON(数据存储)