一般继承开发环境(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相关推荐

  1. 【Java可执行命令】(六)调试工具 jdb:深入解析应用程序调试工具jdb ~

    Java可执行命令详解之jdb 1️⃣ 概念 2️⃣ 优势和缺点 3️⃣ 使用 3.1 语法格式 3.1.1 参数:-sourcepath < path> 3.1.2 指令:run [cl ...

  2. 使用JDB调试Java程序

    使用JDB调试Java程序 1.使用JDK的JDB工具附加调试Java程序 首先用以下命令启动Java程序: java -Xdebug -Xrunjdwp:transport=dt_socket,se ...

  3. JDB附加调试线上JAVA程序

    前面介绍过用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场环境中通常没有安装Eclipse,这时候就可以用jdb来附加进程调试了. 1)首先要保证使用以下命令启动JA ...

  4. jdb java_利用JDB附加调试JAVA程序 | 学步园

    之前有介绍用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场JAVA程序出现异常,又不能在现场真实环境装Eclipse来调试,所幸有JDB这个工具.此工具的常规用法不介 ...

  5. 用java实现一个计算器程序_1.2第一个java程序——hello world

    第一个java程序--hello world 实现一个java程序,主要有三个步骤:1.编写源代码,2.编译源代码,3.运行.java的源代码必须先编译,然后才能由JVM解析执行.所以我们程序员第一步 ...

  6. java的调试工具_2020年最佳Java调试工具(翻译)

    调试是应用程序开发周期不可或缺的一部分.用Java或任何其他语言编写程序时,每个开发人员应解决的首要问题之一是可靠的调试工具的可用性. 所使用的工具类型可能影响或破坏应用程序的调试过程,因此至关重要的 ...

  7. java程序_Java程序员必备----Java命令大全

    1.java.exe: ====================== 运行java程序,这个相信每一位用Java的人知道了.2.javac.exe: ====================== 编译 ...

  8. Java程序常用工具

    添加网址超链接后,博客无法发布,会出现以下问题: 因此,本文的所有网址都取消了超链接,同时将网址协议的"http://"也给取消了,如果无法访问,添加上该协议即可. Java7的所 ...

  9. java调试器jdb_Java调试教程-Java调试器(JDB)概述

    Java调试教程-Java调试器(JDB)概述 (2010-12-24 10:44:44) 标签: 杂谈 摘要 虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点.最重要 ...

最新文章

  1. mysql 修复_修复崩溃的Mysql
  2. idea +springMVC搭建项目,新建各种文件基础
  3. Python 之 super MRO (没有遇到过适用场景)
  4. JVM插码之五:Java agent+ASM实战--监控所有方法执行时间
  5. keil5图标变成白色_电脑桌面图标全部变成白色的解决办法
  6. vscode生成vue模板快捷键_VSCode一键生成.vue模版
  7. SAP License:生产订单无目标成本解决办法
  8. python 菜鸟-Python3 列表
  9. 离线环境安装dotnet framework nuget包
  10. js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
  11. Hugging Face Course-Diving in 抱抱脸 Datasets library
  12. 【java】解决安装时时显示this version of the jdk is already installed……
  13. win7修改驱动inf,驱动非官方美加狮XBOX360手柄
  14. 使用sysprep.exe遇到windows无法完成系统配置。若要尝试恢复配置,请重新启动计算机
  15. Nicolas Bourbaki 是何许人也,下一个中本聪?
  16. BI工具和报表工具有什么不同
  17. 分享史上Java最牛逼,最简短的代码
  18. 推荐系统系列:新浪搜索团队FiBiNET理论和代码实现
  19. 华为8c系统语言切换,华为荣耀畅玩8C双清教程_怎么清理缓存和恢复出厂设置
  20. Unity之JSON(数据存储)

热门文章

  1. idea远程连接hive失败
  2. java isempty用法_Java Set isEmpty()用法及代码示例
  3. 纯Python read_counts 转FPKM v2
  4. 如何查询是否有电子驾照
  5. 【无限思维画布】制作思维导图第三步,节点移动与编辑
  6. nginx 打开压缩gzip on有什么用
  7. 2021年度训练联盟热身训练赛第五场 G-Human Pyramid 动态规划
  8. AMBA协议(二) APB协议
  9. 测试面试常见面试题汇总一
  10. sklearn参数优化方法