IDEA的使用(三)Debug(断点调试)(IntelliJ IDEA 2022.1.3版本)

news2024/11/17 9:34:01

编程过程中如果出现错误,需要查找和定位错误时,借助程序调试可以快速查找错误。

编写好程序后,可能出现的情况:

        1.没有bug。

        使用Debug的情况:

        2.运行后,出现错误或者异常信息,但是通过日志文件或者控制台,显示了异常信息的位置。

        3.运行后,得到了错误的结果。

        4.运行后,得到了正确的结果,但是在大量、多次运行后,出现了错误的结果。

        (例1:多线程情况下,处理线程安全问题。例2:不同格式的输入数据,出现错误结果。)

1. Debug的步骤

1.添加断点。

2.启动调试。

3.单步执行。

4.观察变量和执行流程,找到并解决问题。

1.1 添加断点

在源码文件中,在想要设置断点的代码行的前面标记行处,单击鼠标左键出现红色圆点,就设置了一个断点。再次单机红色圆点行,就可以取消断点。

1.2 运行调试

单机臭虫,Debug调试运行代码,会停在断点位置。且在调试过程中,可以动态添加或取消断点。

1.3 调试工具按钮介绍

1. 步过:

        开始运行下一步代码,不是下一个断点。且不进入方法内部。

2. 步入、强制步入:

        开始运行下一步代码,且可以进入当前这一行代码调用的方法或构造器内部。

   区别

       步入:只能进入自己写的方法或构造器内部。

       强制步入:可以进入自己写的方法或构造器内部,也可以进入SDK定义的源码中的方法内部。

3. 步出:

        跳出当前这一行代码调用的方法、构造器、源码方法

4. 运行到光标处:

        直接跳到光标所在位置。如果中间有调试标记行,那还是会先进行调试行,再跳转。

5. 恢复程序:

        

        1. 如果后面没有断点,则结束调试,直接出结果。

        2. 如果后面有断点,则直接进入下一个断点位置。

6. 停止调试:

7.查看所有断点:

        显示整个程序执行过程中添加断点的位置。

 8. 显示执行点:

        显示当前代码正在执行哪一行的断点。

9. 静音断点:

        使得当前代码后面所有断点失效,一次执行到底。

2. 多种Debug情况介绍

2.1 方法断点

在方法上设置断点,显示红色菱形块。右键单机菱形块,可以看到监视。

方法输入:默认勾选,表示进入方法时,断点可以被唤醒。

方法退出:需手动勾选,表示在方法退出时,断点也被唤醒。

方法的覆盖:

子类调用父类方法的时候,如果父类方法中方法断点,则子类运行调试时一样会进入父类方法停留调试。

例如,我们进入源码,把源码某个方法设置断点,那么,调试代码中调用这个方法的时候,就会出现断点调试。

2.2 字段断点

在类的属性声明上打断点,默认对属性的修改操作进行监控。每次修改这个属性,都会停留。

当勾选“字段访问”时,每次获取(例如打印)这个变量值,调试也会停留。

2.3 条件断点

设置断点之后,写上执行这个断点的条件。不满足条件的时候,断点不会执行。

2.4 异常断点

对异常进行跟踪,如果程序出现指定异常,程序就执行断点,自动暂停。

例如:设置出现空指针异常,就打断点。

操作:点击查看所有断点按钮,添加断点,选择Java异常断点,搜索空指针异常进行添加,看到已勾选这个断点,点击完成。下次出现这个异常,异常那一行就会出现闪电标识的断点。

2.5 线程调试

挂起线程,输入条件,执行调试到满足该条件的线程,就会暂停。

2.6 强制结束(强制返回)

调试过程中已经发现问题,不希望程序继续执行。

可以选择强制结束(Force Return),然后点击恢复恢复程序,就直接结束了。

但是,如果在程序正在调用方法,方法需要一个返回值才能结束,就会出现

这就比较麻烦了,写不出对的返回值,就只能继续执行完这个方法。

2.7 自定义调试数据视图

在调试面板的空白处右键,选择自定义数据视图。

出现这个框:

例如:

2.8 常见问题

问题:使用Step into(步入)时,会出现无法进入源码的情况,怎么办?

方案1:使用force step into(强制步入)。

方案2:点击进入如下页面,把java.*javax.*取消勾选。(不建议

使得步入和强制步入完全一样,没有区别。

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

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

相关文章

【置顶】关于博客的一些公告

所谓 万事开头难,最开始的两个专栏 《微机》 和 《骨骼动作识别》 定价 29.9 ,因为: 刚开始确实比较困难,要把自己学的知识彻底搞懂讲给别人,还要 码字排版,从 Markdown 语法开始学起(这都是 花…

林沛满-TCP 是如何避免被发送方分片的?

TCP 可以避免被发送方分片,是因为它主动把数据分成小段再交给网络层。最大的分段大小称为 MSS(Maximum Segment Size),它相当于把 MTU 刨去 IP头和 TCP 头之后的大小,所以一个 MSS 恰好能装进一个 MTU 中。 图4 图 4 …

『Linux项目自动化构建工具』make/Makefile

前言 如题可知,make/Makefile为在Linux下的项目自动化构建工具; 在上一篇文章『Linux - gcc / g』c程序翻译过程 中讲解了C/C程序的翻译过程; 而make/Makefile即可以看成,是Makefile在使用gcc/g使在Linux环境下能够更好的高效率的进行项目构建; 在此之前首先要对make/Makefile…

Http请求响应 Ajax 过滤器

10/10/2023 近期总结: 最近学的后端部署,web服务器运行,各种请求响应,内容很多,学的很乱,还是需要好好整理,前面JavaSE内容还没有完全掌握,再加上一边刷题,感觉压力很大哈…

归纳所猜半结论推出完整结论:CF1592F1

https://www.luogu.com.cn/problem/CF1592F1 场上猜了个结论,感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作,被#14hack了。然后就猜4操作只会进行一次,然后就不知道怎么做下去了。 上面猜的结论都…

Multi-Grade Deep Learning for Partial Differential Equations

论文阅读:Multi-Grade Deep Learning for Partial Differential Equations with Applications to the Burgers Equation Multi-Grade Deep Learning for Partial Differential Equations with Applications to the Burgers Equation符号定义偏微分方程定义FNN定义PI…

iceberg简介004_iceberg和其他数据湖框架的对比---​​数据湖Apache Iceberg工作笔记0004

然后来看一下iceberg和其他数据湖框架的对比这里可以看到hudi支持的多一点对吧,但是 iceberg有自己的优势,并且他们都支持timeline 也就是时间旅行对吧. 然后这个图是显示了,数据湖三剑客的开源时间,以及火热程度,可以对比一下看看.

复旦管院启动科创战略,培养科技研发人才,引领未来发展!

今年夏天,600多位优秀的企业家成为复旦大学EMBA 2023级新生。在疫情结束后,他们选择百战归来再读书,重新回到久违的课堂,共同探索科创大时代下企业的商业本质,开启新的学习与人生旅程。复旦大学管理学院院长陆雄文教授…

只会 Windows 也能轻松搭建远程桌面 RustDesk 自用服务器

网管小贾 / sysadm.cc “哥,你啥时候回来啊?XX业务系统又出问题了!” “情况紧急,老大说让你远程处理,总之尽快解决!” 虽说我常年出差在外总能收到这样的消息,似乎早已习惯,但是公…

Go 语言切片扩容规则是扩容2倍?1.25倍?到底几倍

本次主要来聊聊关于切片的扩容是如何扩的,还请大佬们不吝赐教 切片,相信大家用了 Go 语言那么久这这种数据类型并不陌生,但是平日里聊到关于切片是如何扩容的,很多人可能会张口就来,切片扩容的时候,如果老…

基于安卓android微信小程序音乐播放器

运行环境 小程序前端框架:uniapp 小程序运行软件:微信开发者 后端技术:javaSsm(SpringSpringMVCMyBatis)vue.js 后端开发环境:idea/eclipse 数据库:mysql 项目介绍 音乐播放器小程序的设计主要是对系统所要实现的功能进行详细考虑,确定所要…

唐老师讲电赛

dc-dc电源布局要点

计算机网络 面试题

PART1 1.TCP和UDP的区别是什么? 2.TCP报文首部格式是什么? 3.TCP三次握手的过程 4.为什么TCP要三次握手? 5.TCP三次握手的数据报可以携带数据吗? 6.半连接队列是什么? 7.SYN 洪泛攻击是什么? 8.TCP…

数据库sql查询成绩第二高

select * from propro; #查询成绩第二高 select max(id) from propro where id <(select max(id) from propro); #查询成绩第二高的第二种方式 select * from (select * from propro order by id desc limit 2) as b order by id asc limit 1;

尚硅谷CSS学习笔记

什么是css css&#xff08;层叠样式表&#xff09; 它是一种标记语言&#xff0c;用于给HTML结构设置样式。简单理解css可以美化html&#xff0c;实现结构与样式的分离。 <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"&g…

【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Nacos 一、 Nacos安装&#xff08;基于Wind…

35.树与二叉树练习(1)(王道第5章综合练习)

【所用的树&#xff0c;队列&#xff0c;栈的基本操作详见上一节代码】 试题1&#xff08;王道5.3.3节第3题&#xff09;&#xff1a; 编写后序遍历二叉树的非递归算法。 参考&#xff1a;34.二叉链树的C语言实现_北京地铁1号线的博客-CSDN博客https://blog.csdn.net/qq_547…

【【萌新的SOC学习之重新起航SOC】】

萌新的SOC学习之重新起航SOC ZYNQ PL 部分等价于 Xilinx 7 系列 FPGA PS端&#xff1a;Zynq 实际上是一个以处理器为核心的系统&#xff0c;PL 部分可以看作是它的一个外设。 我们可以通过使用AXI(Advanced eXtensible Interface)接口的方式调用 IP 核&#xff0c;系统通过 AX…

四维曲面如何画?matlab

clc; clear all [theta,phi]meshgrid(linspace(0,pi,50),linspace(0,2*pi,50)); zcos(theta); xsin(theta).*cos(phi); ysin(theta).*sin(phi); f-1*((x.*y).2(y.*z).2(z.*x).^2); surf(sin(theta).*cos(phi).*f,sin(theta).*sin(phi).*f,cos(theta).*f,f) 结果

第九天!玩转langchain!回调处理器!一篇学会日志+监控+流式传输!9/10

原文&#xff1a;第九天&#xff01;玩转langchain&#xff01;回调处理器&#xff01;一篇学会日志监控流式传输&#xff01;9/10 - 知乎 在第九篇&#xff01;跟着雄哥学langchain中的回调处理器&#xff01; 时间飞快呀~已经第九课了&#xff0c;在更新的这10天时间&#x…