【Debug常规操作总结】

1. 从方法中退回上一步

进行代码调试的过程中,有的时候由于自己点击下一步的速度比较快,可能之前打的断点命中后直接跳过去了进入到某个方法的内部,但是我们还是想看回头看之前断点中的情况,那么此时可以使用这个回到上一步功能即Drop Frame,快速定位到之前的代码运行位置。我们都知道JVM通过栈帧保存方法调用地址的,因此实际上这部分的功能可以理解为舍弃当前的调用栈回到原来的调用处。

在这里插入图片描述

2. 检测属性值修改

当我们需要知道类中某个属性值到底什么时候被修改的时候,如果要从最起始的地方进行调试实在太过麻烦,因为有的时候我们可能并不知道属性赋值的起始点到底在哪里。那么此时可以尝试在类的字段进行断点,勾选上在属性访问或者属性修改的时候将运行到属性修改发生的地方或者属性被访问的地方,这样可以大大提高我们找到属性修改在什么地方被修改的效率。
首先给字段打断点

在这里插入图片描述

然后Debug看看效果
啊

遇到属性值被修改的地方,他会标注出来小眼睛,还会将旧值标注出来

3. stream调试

Stream流是JDK1.8的新特性,在实际的项目编码也会被经常使用到来简化一些循环操作的代码。但是Stream流并不好进行调试,因此不太方便查看stream流内部的值运行情况,此时我们需要借助于Java Stream Debuger这个插件,这样我们在进行stream流debug的时候就可以看到内部各个值执行的流程以及最终结果,方便我们进行问题定位,非常清晰明了。
首先打断点,点击下方按钮
在这里插入图片描述

其次看效果
在这里插入图片描述

按钮1意思是:是否逐步查看stream操作或者全局查看stream操作,(当前为逐步查看视图,可以点击上方2的tab进行查看。)
下面是全局视图查看效果
在这里插入图片描述

真的是清晰明了,中间的每一步操作,都用箭头指明。

补充:set集合的调试

set集合的stream调试类似于list,可以说没区别,只不过这个例子进行了两次流操作,当我们点击按钮后,他会出现一个小弹窗,让你选择查看哪一段流操作,图中两次流操作,对应了两个选择,点击后就和正常查看stream操作一样的视图了
在这里插入图片描述

看看点击下面这个选项的视图
在这里插入图片描述

4. 表达式计算结果查看或修改属性值

在进行Debug的过程中,在代码的右侧一般会默认展示一些变量当前的值,但是对于一些表达式的值并不会默认展示,而我们有的时候需要关注一下表达式在计算过程中的数据是否正确。此时便可以通过鼠标选中需要计算的代码表达式然后结合(Alt+F8)快捷键查看表达式的计算结果,而且在debug的过程中,有时候我们需要按照我们预想的逻辑进行问题排查定位,这种场景下我们可能需要修改某些变量的值以便于代码走入不同的业务逻辑。通过Alt + F8快捷键修改获取指定变量的值,右键Set Value设置新的值。
如下图操作,首先选中要计算的代码,然后可以Alt+F8 ,也可以点击计算器按钮,点击Evaluate按钮进行计算
在这里插入图片描述

除此之外,还可以队选中的变量进行修改值,如下图
在这里插入图片描述

在这里插入图片描述

改成你想要的变量值后,直接回车即可
在这里插入图片描述

可以看到,变量的值已经改为我们需要的值了,但是源数据并未被修改,仅作为本次debug用,后续代码逻辑,就会按照你本次修改的变量值进行操作了

5. debug筛选条件

在一些循环条件中,比如某个List中有100个对象,但是我们在调试的时候希望快速找到满足条件的对象,而不是在不关注的对象上面浪费时间进行debug,这个时候我们就可以使用debug筛选条件快速过滤出我们需要的对象,提升我们debug的效率。
首先在你的断点位置,右键点击断点,在condition框中输入筛选条件即可
在这里插入图片描述

然后直接Debug,这个时候,他就会跳过不符合筛选条件的元素,只会让你看到符合条件的元素,但是要注意的是,拿上图来说,并不是说奇数不执行后续操作了,而是idea把奇数元素的操作过程在后台执行了,只让你看偶数的操作,因为你也不关心偶数元素的后续操作,这也就是筛选条件的本质意义:
不在不关注的对象上面浪费时间

补充:所有的遍历方式都可以加筛选条件断点,for,foreach,以及map的几种遍历方式

6. 异常断点

大部分情况进行断点调试都是出现了异常需要进一步定位具体原因。但是一般情况下当发生异常的时候,抛出来的异常要么被框架捕捉了,进入框架的源码当中,要么被自己业务代码中的try catch捕捉了,影响问题定位。因此我们想要当异常发生的时候可以停在抛异常的地方,方便我们进行问题定位。
首先右键点击断点,点击更多操作
在这里插入图片描述

然后进入到下面这个页面
在这里插入图片描述

搜索错误类型并添加,之后在debug过程中,如果遇到空指针,他就会给你标识出具体代码行,如下图
在这里插入图片描述
还有一些基础操作以及快捷键,可以自行百度

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值