1、普通断点
【适用于查看变量运行的值,不用log输出】
比如以debug方式运行,在代码行打了一个断点,当请求的时候就会自动停在那一行,右侧就是相关变量的值
普通断点.png
2、往下走的三种方式
(2-1)一步一步走
【适用于逻辑复杂,需要一步一步排查】
(1)直接点击按钮一行一行走
往下走.png
(2-2)跳到下面光标某处(只能往下)
【适用于快速跳转到某个方法】
(2)点击run ro cursor直接跳到下面某行(比如光标在20行,点击完跳转按钮之后就会运行到第20行)
(2-2-1)如果光标在上面也点击了这个按钮的话,你会发现debug不能用了,不灵了,
这个时候需要先点击左侧的【暂停】,再点击【放行】,下次就可以正常用断点了
跳到下面某行.png
(2-2-1)
暂停-放行.png
(2-3)条件暂停
【多用于循环里面的表达式判断或者条件对于表达式判断】
比如在普通断点右击会弹出一个小框,在condition里面输入满足的表达式结果为true就会暂停了,
此时断点不是普通的断点,上面会有一个问好,只有满足条件才会暂停
条件暂停.png
3、回退
(3-1)往上回退
【适用于进入了方法套方法那种,需要重新进入该方法】
当进入一个方法发现需要断点查看数据的哪一行以及走过值被改变了,这时候就需要方法回退重新进入,
这时候你会发现下面有一个reset frame,可以重新返回到方法调用的断点位置
回退.png
方法调用出.png
(3-2)进入退出
【适用于源码追踪,或者快速进入某个方法,或者返回上一层方法】
进入跳出.png
4、向下预测
【适用向下结果推断,或者某个jdk内部对象比如request条件输出里面的值是否存在,用于写代码提前判断,等等】
比如说现在走到了19行,拿到了L这个值,如果下面有需要对这个之处理的,不需要一步一步断点走到下一步。
可以直接选中代码点那个按钮,或者在里面直接点那个按钮,
在弹出框里面输完代码之后点击evalute就可以出结果了
往下预测.png
预测计算2.png
5、临时赋值
【适用于数据临时改变测试多种场景值代入】
如果说生成的值不是满意,或者要测试其他结果不方便造数据,就可以临时改值
什么类型的对象都可以,塞值的时候要满足相应的语法规则,比如有的是用add,字符串就是直接改,long类型要加L后缀等
赋值.png
赋值2.png
6、强制退出
【适用于数据库数据很珍贵那种,污染之后不容易造出来】
如果在到哪某个判断或者结果不满足的时候,在数据执行之前可以抛出异常,强制退出方法
如果方法嵌套多层throw之后还会进到上层catch里面,这时候重复throw就行了。正常情况下都是一次,
如果发现throw 之后进入了jdk的类类面,那么就可以【放行】了
throw1.png
throw2.png
7、并发调试
【适用于测试锁或者事务的时候,需要多线程进行调试判断】
在普通断点上右击选择thread,然后done确定,后面打断点会自动变成thread选项
postman克隆一份请求重新发起进行测试
比如在第20行打了一个断点,发起了一个请求,然后在第18行又打了一个断点,
又复制了一份请求(不是代码)进行发起,你会发现两个请求都在阻塞中
点击不同请求进行切换,可以发现请求1目前在20行,请求2在18行,可以切换不同请求进行断点操作
多线程.png
请求.png
请求1.png
请求2.png