IntelliJ IDEA断点调试技巧
一、开启断点调试
这个按钮可以开启
二、调试界面按钮
如图编号
1、返回断点位置
2、步过
一行行往下执行,不会进入方法里面
3、步入
以进入我们自定义的方法,如果是其他类库的方法不会进入
4、5、强制步入、步出
6、回退断点
这个比较特殊,如果代码没有调用其他地回来方的方法,无法使用状态,进入更深层方法的时候,能够使用,很多时候调试的时候点过头,错过想看的位置,只能重启吗,使用这个drop frame 能回来,这个回退根据栈信息,对于数据库操作不能回退,如果方法调用完,就不能回去了
7、断点跳到光标处
快速跳到光标处所在行
8、表达式计算
计算表达式,能获取元素和计算
9、Stream 调试
Debug调试Lambda表达式时很难受,尤其是哪种一行十几个方法哪种,不知你有没有发现,调试按钮里Trace Current Stream Chain 按钮常年都是黑色的,为什么呢,因为他是做Stream调试的,只有断点在Stream表达式时才能使用,使用方法即断点在Stream时,点击该按钮即可。
10、恢复程序
按钮称为 Resume Program,能够跳转到指定的断点处,我们在10行和第100行各加一个断点,需要点几下该按钮跳转到100行答案是一次即可,第一次断点会在第10行停下,点击改按钮直接飞越90行到第100行
11、停止程序
停止调试,但是注意,即便停止了调试,程序也会继续运行下去
12、查看所有断点
13、禁用断点
暂时禁用掉断点,方便程序继续执行,一般配合 Resume Program。
14、其他
监控变量的变化
三、调试方法
1、方法断点
方法断点是不是用在普通方法上的,最好的用法是在接口上使用,当我们在调试源码的时候,如果在接口上打了断点,再往下走,可以直接跳转到实现类的实现方法上,而不需要我们一个个的去找
方法断点是一个菱形标志
2、属性断点
属性断点是打在属性上的,我们无需再getter setter方法上打断点,在属性上打上断点,就会出现一个小眼睛的标志
在眼睛上点击右键可以设置。
我们一般是通过getter,setter方法设值的,所以就会在这两个方法上停留
3、异常断点
由于空指针出现了BUG,我们想快速定位到哪里出现了空指针,应该怎么做呢—异常断点
异常断点是一个闪电的标志
全局打了个空指针断点,只要哪里出现了空指针,就会在那里停止
4、终止断点
前面我们说过,即便停止程序,也不会让我们后面运行的代码取消执行,那么我一定要取消执行可以–在方法栈上点击右键,有一个Force Return,然后再点击Resumer Program,就可以直接终止返回了。
5、条件断点
想要在某个条件满足的时候打上断点,而不想一步步的走下去,有什么办法吗? 当然有,在断点处右击,在condition里填入相应的条件即可
6、流断点
7、多线程断点
默认All来调试多线程程序会发生什么,可能某条线程就跑掉了,没有停留,而这种方式可以捕获到运行的所有线程
8、远程Debug
Name是之后启动的名称,Host 是远程服务器的 ip,port: 用于远程socket 连接的端口,注意不能和项目端口一致,否则会启动失败,然后,idea 会为我们自动生成一条命令行参数:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
接着在远程启动jar时,加上我们的参数
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar xxx.jar
在远程项目启动成功后, 在本地以Debug方式运行第一步配置的服务