基础DEBUG操作
Step Over
:往下运行一行
Step Into
进入当前行的方法内,自定义方法可以进,JDK方法无法进去
Force Step Into
强制进入当前行方法(有一些方法Step Into进不去)
Step Out
跳出当前方法
Resume Program
:恢复运行程序,运行到下一个断点地方
Drop Frame
:降帧(退回执行方法之前)
方法断点
断点打在方法上
- 方法断点:方法的入口(entry)和出口(exist)都会自动暂停(可以更改)
- 常用场景:打在接口方法会自动跳转到实现类,无需通过上下文环境去分析是哪个实现类
- 缺点:可能会大大降低debug速度
字段断点
- 字段断点:在字段发生变更(默认)或者被访问(需要额外设置)时暂停
- 常用场景:想知道某个属性什么时候被复制,从头开始调试太麻烦
异常断点
- 异常断点:在发生相应异常的地方暂停
- 常用场景:程序抛出了异常,想要快速定位是那个地方抛出了异常
- 缺点:异常可能会太多
主动抛出异常
- 应用场景:测试异常场景
降帧
- 降振:返回到调用方法之前(
drop frame
) - 常用场景:方法执行完还想再执行一遍
就是开头的说的基础中的Drop Frame
条件断点(??)
- 条件断点:在符合条件的情况下才暂停
- 常用场景:断点地方执行次数过多,避免浪费时间在不想关注的流程上,例如排查存在某个问题的spring bean
强制返回
- 强制返回:用于结束当前流程,直接返回
- 常用场景:避免后续资源(数据库/缓存)操作
当我们debug是发现数据有问题,接下来又来写入数据库等操作可能会更改数据,我们正常点击stop他还是会将这个断点运行完,为了不让更改数据则需要强制返回
stream调试(链式代码)
- stream调试:当代码进入调用链时,可以将stream的详细转换过程展示出来
- 常用场景:stream流程过于复杂导致难以理解时使用
执行表达式(??)
- 执行表达式:高效调试神器。用于执行一段我们实时写的代码
- 常用场景:查看数据、修改数据
- 奇技淫巧:后面再说..Evaluate Expression + Remote Debug
未完等待添加...
后续暂时用不到,后续在22分钟后