代码 Debug 调试是研发工程师日常工作中必不可少的重要组成部分。进行代码 Debug 调试的目的无非就两个,一个是自我检查代码逻辑是否有问题,便于自己将 Bug 消灭在测试介入之前;另一个是进行线上问题排查定位,找到实际在跑业务的过程中出现的 Bug。但是无论是哪个目的,高效率地进行代码 debug 调试必定会提高我们码代码的效率以及定位问题解决问题的效率,从而实现代码白盒化自我观测。本文主要罗列了 10 个常用的 Debug 技巧,可以让我们定位代码问题事半功倍。
Debug 调试场景回到上一步进行代码调试的过程中,有的时候由于自己点击下一步的速度比较快,可能之前打得断点命中后直接跳过去了进入到某个方法的内部,但是我们还是想看回头看之前断点中的情况,那么此时可以使用这个回到上一步功能即 Drop Frame,快速定位到之前的代码运行位置。我们都知道 JVM 通过栈帧保存方法调用地址的,因此实际上这部分的功能可以理解为舍弃当前的调用栈回到原来的调用处。
字段断点当我们需要知道类中某个属性值到底什么时候被修改的时候,如果要从最起始的地方进行调试实在太过麻烦,因为有的时候我们可能并不知道属性赋值的起始点到底在哪里,特别是在阅读框架源码的时候。那么此时可以尝试在类的字段进行断点,勾选上在属性访问或者属性修改的时候将运行到属性修改发生的地方或者属性被访问的地方,这样可以大大提高我们找到属性修改再沈地方被修改的效率。
Stream 调试Lambda 表达式是 JDK1.8 的新特性,在实际的项目编码也会被经常使用到来简化一些循环操作的代码。但是 Lambda 表达式并不好进行调试,因此不太方便查看 stream 流内部的值运行情况,此时我们需要借助于 java Stream Debuger 这个插件,这样我们在进行 stream 流 debug 的时候就可以看到内部各个值执行的流程以及最终结果,方便我们进行问题定位。
表达式计算结果查看在进行 Debug 的过程中,在代码的右侧一般会默认展示一些变量当前的值,但是对于一些表达式的值并不会默认展示,而我们有的时候需要关注一下表达式在计算过程中的数据是否正确。此时便可以通过鼠标选中需要计算的代码表达式然后结合(Alt F8)快捷键查看表达式的计算结果。