关于idea的八种断点调试

背景:在日常开发中,我们经常会使用到idea,那么debug就更不用说了,但是你真的会打断点么,看完这篇文章再下结论吧 (ps,部分图片因为公司做过内部分享,所以打码)

一:行断点

也就是我们去给某一行加上断点,很基础也很常用

在这里插入图片描述

二:方法断点

在方法的行去加上断点,这样在方法的进入和方法的结束,都可以卡住(用于监控方法的调用)

在这里插入图片描述

三:属性断点

在属性上打上断点,用于监控属性的变化 (适用于维护别人的代码,监控某个值在哪里做了改变)

在这里插入图片描述

四:异常断点

在属性上打上断点,用于监控属性的变化 (适用于维护别人的代码,监控某个值在哪里做了改变)

在这里插入图片描述

如上,如果某行代码np异常我想快速定位到,那么我就可以在异常行打上发生异常的断点,一旦发生异常就可以自动卡住,如下图
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五:条件断点

某个条件触发的断点 (属实废话文学了)适用于业务上某些数据不符合预期,快速定位到有问题的数据对象
在这里插入图片描述

比如上面的例子,我想定位到数据库中哪条数据有问题是负数导致了我的总数也负了

如下图,我们可以看到,断点卡在了负数分数的对象上
在这里插入图片描述

六:源断点

这个直接上需求解释,日常调试中,我想知道一个循环中的每次变量值,请问怎么办?(老夫上来就sout,我猜你也是这么想的,其实有更优雅的方法哦)

在这里插入图片描述

那么我们尝试打一个源断点,如下图
在这里插入图片描述

运行结果如下,可以看出每行的值都展示出来了而且不会存在断点卡住的情况,左右二图的区别在于是否勾选展示断点行信息

七:多线程断点

在多线程的场景下,我们如果想单独调试某个线程的断点,而被其他线程影响

在这里插入图片描述

如上图,我只是想调试下面的线程,而不想上面的线程执行影响我,那么我只需要打上多多线程断点即可,操作如下
在这里插入图片描述

(ps:一定要勾选自己想要调试的线程)

运行结果如下:我们可以看到,卡在了第二个线程,并且第一个线程无输出
在这里插入图片描述

八:stream断点

用于java8+等版本的stream使用时的断点,可以充分展示每个链式操作的数据流转过程

在这里插入图片描述

九:断点回退

用于方法级别的调试时,回退到方法的进入之前,用于手速太快,不想重启,想重新执行一次断点的场景

ps:(1.一定要是方法调用,2.引用对象不建议使用,回退后对象的内容会发生改变)

如下,我们可以看到回退后,基本数据类型sum,从2回退到了0,可以重新进入方法

在这里插入图片描述

posted @ 2024-10-24 14:39  CharyGao  阅读(11)  评论(0编辑  收藏  举报