每个Java开发者都必须知道的七个Intellij调试技巧

你知道这些窍门吗?这些肯定会提高你的开发效率。

调试代码是java工程师日常工作的一个重要部分。
调试代码的目的有两个:
一个是检查代码逻辑是否有问题,从而检查代码逻辑,发现隐藏的bug;
另一个是当系统出现bug时,可以快速定位问题,修复这些bug。
但是,不管是哪种目的,高效的代码调试无疑会提高我们的代码效率,提高定位和解决问题的效率,从而达到白盒代码自我观察的目的。
本文主要列举了10种常用的调试技巧,这些技巧可以帮助我们快速发现代码BUG。

表达式计算结果评估

在调试过程中,一些变量的当前值会默认显示在代码的右侧,但一些表达式的值则默认不显示。
有时我们在计算过程中需要注意表达式的数据是否正确。
这时,你可以复制要选择的表达式,然后使用快捷键或点击下面的图标来查看表达式的计算结果。

调试条件

在一些循环条件中,一个代码片段需要通过条件判断后才能执行。
然而,在调试时,我们希望快速找到符合条件的对象,而不是把时间浪费在我们不关心的调试对象上。
这个时候,我们可以使用调试过滤条件来快速过滤出我们需要的对象,大大提高了我们的调试效率。

丢弃框架

在代码调试的过程中,有时由于你点击下一步的速度很快,可能会在打到之前打的断点后直接跳到某个方法的内部,或者有些会直接退出,重新执行调试。
这时,你可以使用 “Drop Frame “的功能返回到上一步,并快速定位到之前代码的运行位置。
我们都知道,JVM是通过堆栈框架来保存方法调用地址的,所以其实这部分功能可以理解为放弃当前的调用堆栈,返回到原来的调用。

调试字段

当我们需要知道一个类中的字段值被修改时,从一开始就进行调试是非常麻烦的,因为有时我们可能不知道字段值赋值的起点在哪里,特别是在阅读框架源代码时。
这个时候,你可以尝试在类的字段中做断点。
检查字段访问或字段修改是否会运行到字段修改发生的地方或字段被访问的地方。
这将大大提高寻找字段被修改的地方,然后进行修改的效率。

流调试

Java 8后来引入了lambda表达式的功能。
虽然该功能使用起来非常方便,但调试起来却非常麻烦。
主要是不方便查看流的内部值的运行状态。
这个时候,我们需要使用Java Stream Debugger插件,这样我们在调试流的时候就可以看到内部值的执行过程和最终结果,方便我们定位问题。

强制返回

有时,当我们调试一些耗时的代码时,我们可能只是想确认业务逻辑是否有问题,而并不真的想执行这些代码。
在这种情况下,我们可以使用强制返回函数来指定一个返回值,以继续后续的业务逻辑调试,而不执行该方法背后的代码。

多线程调试

在Idea的默认调试模式下,所有线程都将被封锁。
只有当当前的调试线程完成了它的逻辑,它才能进入其他线程。
如果我想在多线程的情况下调试代码逻辑,应该怎么做?
其实,在设置断点时,我们可以通过右键单击断点来选择线程调试模式。

好了,已经介绍了七种调试技术。我希望这篇文章能够提高你的IntelliJ调试能力。最后,感谢您的阅读。