001、条件断点

给断点增加一个 Java 条件表达式,当表达式的值是 true 时断点才生效,例如设置 for 循环中 i 为偶数时断点才生效:
image.png

002、计算表达式

调用自定义的 Java 表达式,输出计算值:
image.png
屏幕录制2021-12-12 15.16.57.2021-12-12 15_20_36.gif

003、修改变量值

有些时候程序运行结果不符合预期,但是我们不想修改代码重头再来,这时可以动态地修改变量的值:
2021-12-12 15-23-34.2021-12-12 15_25_05.gif

004、打印堆栈信息

用于查看方法调用的堆栈,勾选打印堆栈选项即可:
2021-12-12 15-53-45.2021-12-12 15_55_14.gif

005、监听变量

用于监听变量,当变量被修改和读取时程序会暂停运行,例如监听 count 变量:
2021-12-12 15-32-40.2021-12-12 15_33_23.gif

006、自定义多线程执行顺序

将断点设置为线程级别,这样就可以人为地操控线程的执行顺序,对于调试高并发下的特殊情况非常有帮助:
image.png
例如手动操控先打印 thread-2 再打印 thread-1
2021-12-12 16-23-53.2021-12-12 16_27_52.gif

007、回退父级函数

有些时候不小心点了单步进入到方法内部,可以通过 丢弃当前帧 退回来,它的厉害之处在于退出来之后带能再进入:
image.png
2021-12-12 16-14-04.2021-12-12 16_18_53.gif

008、Stream流追踪

用于展示 stream 流每一步的执行结果,方便观察步骤比较多的 stream 流逻辑:
2021-12-12 15-37-26.2021-12-12 15_42_43.gif

009、force return 强制返回

有时在调试的时候发现了一些错误,这时想停止运行,因为继续往下执行会插入一些数据,清理数据又是一番功夫,如果点击停止运行是不行的,IDEA 会把当前方法后面的代码都执行了,解决这个问题可以用 force return 选项强制返回:
2021-12-12 16-04-44.2021-12-12 16_09_49.gif

010、方法断点

将断点打在类或接口的方法,当方法被调用时程序会暂停运行:
image.png

011、跳转到光标

有时代码行数比较多,不想一行一行地点击执行,可以将光标定位到目标行,再点击按钮直接执行到光标处:
image.png