开发技术-使用 JDB 调试

news2024/11/23 21:44:42

Java 调试器(JDB)是 JDK 内置的命令行工具。从调试的指令和命令行接口两方面看的话,JDB 至少从概念上是 GNU 调试器(GDB,受 Unix DB 的影响)的继承者。
示例:

public class SimpleDebugging {
    private static void foo1() {
        System.out.println("In foo1");
        foo2();
    }

    private static void foo2() {
        System.out.println("In foo2");
        foo3();
    }

    private static void foo3() {
        System.out.println("In foo3");
        int j = 1;
        j--;
        int i = 5 / j;
    }

    public static void main(String[] args) {
        foo1();
    }
}

输出:

In foo1
In foo2
In foo3
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at validating.SimpleDebugging.foo3(SimpleDebugging.java:23)
	at validating.SimpleDebugging.foo2(SimpleDebugging.java:16)
	at validating.SimpleDebugging.foo1(SimpleDebugging.java:11)
	at validating.SimpleDebugging.main(SimpleDebugging.java:27)

为了运行 JDB,你需要在编译 SimpleDebugging.java 时加上 -g 标记,从而告诉编译器生成编译信息。
1.在 IDEA 上找到 java 文件的位置
在这里插入图片描述
2.打开 cmd
在这里插入图片描述
3.编译单个 java 文件
在 cmd 中输入命令:

javac -g SimpleDebugging.java

出现中文乱码
在这里插入图片描述
输入下面的命令解决:

javac -encoding utf-8 -g SimpleDebugging.java

在文件夹中出现编译后的 class 文件
在这里插入图片描述
4.执行 JDB 命令

jdb SimpleDebugging 

注意:不带 class 后缀
接着 JDB 就会运行,出现命令行提示。你可以输入 ? 查看可用的 JDB 命令。
输入:

catch Exception

命令 catch Exception 在任何抛出异常的地方设置断点。
继续输入:

run

结果出现找不到主类错误
在这里插入图片描述
5.后续操作
在源码中将包信息注释掉
在这里插入图片描述
再重新运行以下命令:

javac -encoding utf-8 -g SimpleDebugging.java
jdb SimpleDebugging 
catch Exception
run

现在程序将运行到下个断点处,在这个例子中就是异常发生的地方。下面是运行 run 命令的结果:
在这里插入图片描述
程序运行到第16行时发生异常,但是 JDB 在异常发生时就不复存在。调试器还展示了是哪一行导致了异常。你可以使用 list 将导致程序终止的执行点列出来:

list

在这里插入图片描述
命令 locals 能转储所有的局部变量值:

locals

命令 wherei 打印进入当前线程的方法栈中的栈帧信息:

wherei

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ String类(上篇)

绪论 放弃时间的人,时间也会放弃他。——莎士比亚 ; 本篇章是关于string类内一些函数的介绍以及使用方法,都是我们编程必须掌握的基础! ​ 全文共7000字左右. 话不多说安全带系好,发车啦(建议电脑观看&…

点亮创意灯,用Firefly Beta绘制生动有趣的成语故事!

1、打开链接: Adobe Firefly 2、点击generate按钮。 3、输入需要生成的成语描述,英文的。 比如我们要画守株待兔: An ancient Chinese farmer, lying under a big tree, waiting for a rabbit to run over 4、点击fresh按钮。 5、下载其…

(MIT6.045)自动机、可计算性和复杂性-图灵机

有穷自动机(FA)对有限存储量设备是比较好的模型,下推自动机对无限存储设备是较好的模型(但是其存储只能用后进先出的栈模式来使用。)这两个模型过于局限,不能作为通用模型。 图灵机 和FA相似,但是图灵机有无限的存储…

中央商务区对区域空间结构的影响机制

中央商务区(CBD)是经济发展到一定阶段后的必然产物,它已经成为城市或国家最重要的经济增长驱动器。中央商务区的形成过程本身即是区域空间结构的变化过程,经济活动在空间上的集聚与分散形成各类产业的集聚体,区域经济活…

ROS学习——通信机制(话题通信①—发布方实现)

2.1 话题通信 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 040话题通信(C)1_发布方框架_Chapter2-ROS通信机制_哔哩哔哩_bilibili 一、ROS 中的基本通信机制主要有如下三种实现策略 话题通信(发布订阅模式服务通信(请求响应模式)参数服务器(参数共享模式) 二、…

引领618首波爆发!实在RPA数字员工与海尔等品牌共赢全域增量

作为全面放开之后的首个现象级电商大促,今年618的重要性不言而喻。如何在“毛遂自荐”的大促秀场中,满足甚至超过消费者购物需求,成为每个品牌商家的必修课。 疫情的催化和直播间强互动属性,越来越多消费者倾向直播购物&#xff0…

在通讯方面对讲机比微信更有优势吗?

对讲机和微信属于不同的通信工具,它们在某些方面都有着各自的优势。那么在通讯方面对讲机比微信更有优势吗?下面河南宝蓝小编为大家详细介绍下。 一、即时与实时通信: 对讲机作为一种即时通信工具,能够立即与其他用户进行实时语…

vue项目中el-upload 组件添加token的方法

在使用el-upload的时候&#xff0c;上传文件到服务器&#xff0c;有时候后台要求上传token&#xff0c;怎么处理呢&#xff1f;以下是一个示例。 效果图 template中片段 <el-dialog :modal-append-to-body"false" title"上传文件" :visible.sync"…

轻巧舒适的挂耳式耳机,更轻更好听,塞那Z30S Pro Max上手

入耳式的蓝牙耳机戴久了&#xff0c;总感觉很不舒服&#xff0c;现在市面上又有了很多设计新颖的耳机类型&#xff0c;像是我上周新换的这款sanag塞那Z30S Pro Max&#xff0c;就是一种不入耳的开放式耳机&#xff0c;做得还十分轻巧&#xff0c;带来了更加舒适的佩戴体验&…

调试记录-USB异常断开调试

问题描述 平台&#xff1a;rk3228 android7.1 问题&#xff1a;板子上有一个USB 4G模块&#xff0c;模块不是用标准的USB接口&#xff0c;而是M2接口。接着4G模组开机是可以正常工作的&#xff0c;但是只要点开任意一个app&#xff0c;就会出现设备断开&#xff0c;之后再重新…

怎么登录远程轻量云服务器?

​  轻量云服务器是一种基于云计算技术的服务器&#xff0c;具有价格低廉、配置灵活、易于管理等优点。但是&#xff0c;由于轻量云服务器通常是在云端运行&#xff0c;需要通过远程连接才能进行管理和操作。那么&#xff0c;怎么登录远程轻量云服务器呢? 要远程连接轻量云服…

Linux--ServerProgramming--(7)IPC

1.管道 2.信号量 2.1 概念 信号量 是一个计数器&#xff0c;用于实现进程间互斥和同步。 信号量的取值可以是任何自然数。 最简单的信号量是只能取 0 和 1 的变量&#xff0c;这也是信号量最常见的一种形式&#xff0c;叫做二进制信号量&#xff08;Binary Semaphore&#…

Docker Cgroups资源控制操作

资源控制 Docker 通过 Cgroup 来控制容器使用的资源配额&#xff0c;包括 CPU、内存、磁盘三大方面&#xff0c; 基本覆盖了常见的资源配额和使用量控制。 Cgroup 是 ControlGroups 的缩写&#xff0c;是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如…

vm安装,虚拟环境搭建win+linux+mac,及本机连接虚拟环境数据库、windows服务器搭建、内网穿透

教程中的软件、镜像、工具可去阿里云盘提取&#xff1a; 阿里云盘&#xff1a;https://www.aliyundrive.com/s/CLdTjFtnYbr 提取码&#xff1a;s1a8 一、安装虚拟机 下载链接&#xff1a;https://www.vmware.com/products/workstation-pro.html 下载的过程中可能需要注册登录…

经典的设计模式5——建造者模式

文章目录 建造者模式 建造者模式 截止到今天&#xff0c;创建者模式这一类别的模式已经全整理完了&#xff0c;一共包含5个&#xff0c;工厂方法模式&#xff0c;抽象工厂模式&#xff0c;单例模式&#xff0c;原型模式和建造者模式。还是太看的太慢&#xff0c;得加快进度了。…

黑客零基础入门方法有哪些?如何自学黑客技术?

大家经常问我一个问题&#xff0c;黑客零基础入门方法有哪些&#xff1f;以及如何自学黑客技术&#xff1f;首先要说的是世界上大部分的网络黑客都是自学成才的&#xff0c;这与黑客这门技术有很大的原因&#xff0c;黑客是一个靠兴趣驱动的技术&#xff0c;大部分成为黑客的人…

字节面试归来,黑暗3小时......

背景 杭州某中厂的软件测试开发&#xff0c;本科毕业5年&#xff0c;最近面试了PDD、小红书、字节等多个大厂。几乎都拿到了Offer&#xff0c;最终选择了字节2-2。以下是他的一些分享和总结。 从准备看机会开始&#xff0c;一直到拿到offer&#xff0c;经历了2个月的时间&…

探索未来,畅享奇迹——3DVR智慧景区引领旅游革命

导语&#xff1a; 在快速发展的科技时代&#xff0c;我们正逐渐进入一个全新的旅游体验时代。3DVR智慧景区作为旅游业的革命性创新&#xff0c;为游客带来了前所未有的沉浸式体验&#xff0c;同时也为景区管理者带来了无限的营销机遇。 通过穿戴VR设备&#xff0c;游客能够在虚…

vue项目中el-tree 添加右键菜单的方法

vue项目中&#xff0c;如何在el-tree 中显示右键菜单呢&#xff1f;这里的核心用到了 node-contextmenu“rightClick” &#xff0c;具体的操作方法如下&#xff1a; 核心分析 node-contextmenu是el-tree一重要的属性&#xff0c; 当某一节点被鼠标右键点击时会触发该事件。共…

Sui Builder House日本京都站开启报名

下一站Sui Builder House将于6月29-30日在日本京都举行&#xff0c;为世界各地的开发者提供身临其境地学习和交流的机会。 春日的樱花已经绽放&#xff0c;黄金周也已经过去&#xff0c;现在是时候来京都参加Sui Builder House一起庆祝夏天的来临了。来自日本和周边地区的开发…