前言
idea怎么一步一步的调试,上一篇文章算是 IntelliJ IDEA 高级调试技巧的开胃菜,小伙伴们被这个小技巧征服,趁热打铁,今天给大家带来几个大家日常工作以及阅读源码必备的高级调试技巧
断点处添加 log
很多程序员在调试代码时都喜欢 print
remote
log tree
IntelliJ IDEA 提供 Evaluate and Log at Breakpoints
public static void main(String[] args) {ThreadLocalRandom random = ThreadLocalRandom.current();int count = 0;for (int i = 0; i < 5; i++) {if (isInterested(random.nextInt(10))) {count++;}}System.out.printf(&34;,count);}private static boolean isInterested(int i) {return i % 2 == 0;}
假如我们想在第 15 行查看每次调用,随即出来的 i 的值到底是多少,我们没必要在这个地方添加任何 log,在正常加断点的地方使用快捷键 Shift + 鼠标左键
勾选上 Evaluate and log
&34; + i
interested 7interested 5interested 1interested 2interested 0Found 2 interested values
如果你想要更详细的信息,那就勾选上 Stack trace
字段断点
如果你阅读源码,你一定会有个困扰,类中的某个字段的值到底是在哪里改变的,你要一点点追踪调用栈,逐步排查,稍不留神,就可能有遗漏
方法 1、以下面这段代码为例,首先设置断点,如图所示,然后点击菜单栏上的“甲壳虫”标识,进入debug页面。2、debu页面如图 3、按F6进行调试。如图所示,“variables”表示的是变量的值的变化 代码进行到哪一步,那一步就会。
我们可以在 IntelliJ IDEA 中为某个字段添加断点,当字段值有修改时,自动跳到相应方法位置
使用起来很简单:
在字段定义处鼠标左键添加断点(会出现「眼睛」的图标)
1、Evaluate Expression 表达式求值。Alt + F8 2、Run to Cursor。Alt + F9 3、调试过程中手动改变值。在debug区选中参数,按F2.快捷键运行:ctrl+shift+F10 查看历史运行列表:alt + shift + F9 。
在「眼睛」图标上鼠标右键
在弹框中勾选上 Field access
Field modification
如果修改字段值的方法比较多,也可以在 Condition
异常断点
除了阅读源码,一定是遇到了异常我们才开始调试代码,代码在抛出异常之后会自动停止,但是我们希望:
代码停在抛出异常之前,方便我们查看当时的变量信息
这时我们就用到了 Exception Breakpoints
NumberFormatException
知道异常类型后,就可以按照如下步骤添加异常断点了:
然后在弹框中选择 NumberFormatException
重新以 Debug 模式运行程序:
工作中使用到jdk8 中的Stream 流,需要调试其执行过程中的数据,可以使用下面方法:进入debug模式,选择下面按钮 进入stream流调试:点击相应按钮,执行对应动作,调试 欢迎指正!
程序「一路绿灯式」定位到抛出异常的位置,同时指出当时的变量信息,三个字:稳,准,狠,还有谁?
方法断点
ctrl+F8
鼠标左键在方法处点击断点(♦️形状)
断点上鼠标右键
勾选上绿色框线上的内容,同样可以自定义跳转条件 Condition
当以 Debug 模式运行程序的时候,会自动进入实现类的方法(注意断点形状):
看到这你应该想到常见的 Runnable 接口中的 run 方法了,同样是有作用的,大家可以自行去尝试了
总结
相信有以上四种调试技巧的加成,无论是工作debug 还是私下阅读源码,都可以轻松驾驭了。最后,来看看 IDEA 支持的各种断点调试类型,如果你只知道红色小圆点,那咱在留言区好好说说吧
趣味原创解析Java技术栈问题,将复杂问题简单化,将抽象问题图形化落地如果对我的专题内容感兴趣,或抢先看更多内容,欢迎访问我的博客