1.条件表达式
右键断点写表达式条件后点击done,debug满足条件才会停在此断点。
Thread.currentThread().getName().equals("thread1")
2.打印堆栈信息
右键断点点击more,打开详情
勾选log旁边的 "Breakpoint hit" message (断点触发信息)和 Stack trace(堆栈信息)
输出效果,如果方法被多个类调用时,Stack trace 可以清楚地看到具体的调用类
3.表达式解析
当运行到断点时点击Evaluate Expression...,填写表达式,点击evaluate计算result
比如有许多if else 判断,那么可以用这个实时解析出最后程序走哪个分支
4.避免操作资源 force return
场景:在操作数据库等资源之前发生了错误,不想让程序继续执行,
如果点drop frame,是回到调用方法前,是错误的
应该在frame面板中右键当前方法,点击force return,执行完断点那行就会跳出了。
5.快捷键图标、含义
当代码很长时,断点过程中,光标停在其他位置,show execution point 会回到断点处。
step over 跳过当前行,会到下一行
step into 进入方法
force step into 强制进入方法,进入jar包里的
step out 跳出方法
run to cursor 当代码很长时,断点可以直接跳到光标位置
6.stream 调试
j8里流式编程,打断点时可以选择打在哪里,不过我操作时没有出现(和视频里不一样,可能版本问题,关系不大)
追踪当前stream链式调用,(split mode)会显示每个步骤数据的变化,下面的flat mode 可以一次显示所有变化
7.注意点
打在方法上的断点太多,项目会启动不了,idea会给出提示:
方法断点可能会明显降低调试速度
Method breakpoints may dramatically slow down debugging