IDEA中Debug详细解读
断点类型
- 源断点(SHIFT+左击)
打上一个源断点,对比普通断点这是黄色的,并且点上之后,会展示断点的详细信息(源断点的suspend是没有勾选的),就是说这个段点不会"断",只是在控制台输出一下断点信息(这个用处不大,了解即可)
- 普通断点
- 普通断点就是我们平时打的断点(侧边左击),用法无需多言,这边讲一个断点条件表达式,右击断点后会出现一个断点面板可以在condition上填入条件表达式,这样只有满足条件表达式才会进入断点(完成后点击done按钮, 普通断点会变成条件断点出现一个"?")
- Stream流表达式的debug,使用java8喜欢使用stream流的小伙伴,在打点时可以点击Trace current stream chain来跟踪每次的数据变化,这边就可以展示filter和collet之后的数据变化(版本较低的idea可能没有这个跟踪按钮)
- 多线程的断点调试:多线程么模式下我们往往很难具体的跟踪一个断点,当然用上面的条件断点具体定位一个线程是可以了可是线程一旦多了往往很难切换调试,这边对于多线程的断点处理是有小技巧的:
首先我们先打上断点,在suspend选择Thread(意思是每条线程都会挂起),点击Done
然后执行断点呼出左边的frames,同时evaluate当前线程变量,可以看到当前执行的是A线程,frames中A线程也勾上了,但是B,C线程是挂起的
我们切换B线程看一下: 切换B线程后,B线程勾上了,我们同时刷新下evaluate可以看到当前Running的线程切换成为了B线程,这样一来我们就实现的线程间的切换断点调试.
- 方法断点:
idea中断点打在方法上是菱形的,这个断点会执行2次停顿(即在进入方法时,出方法时停顿,这个也是了解即可)
- 异常断点:
点开view break point, 点击"+" 比如搜索nullPonitException点击后选择,创建一个异常断点:
异常断点是不需要手动打的,当上步配置完成后,只要有nullPointException就会自动停在异常那一行(⚡表示异常断点,这个还是比较实用的~)
- 远程断点:
远程断点是本地项目打上断点后监听服务器上运行的情况,同时服务器也会反馈检查本地是否有断点,如果检测到了断点则会停住,在本地监控服务器的数据和程序运行情况
具体配置: 打开Run Configuration选择Remote,配置服务器地址,5005端口为本地和服务器的通信端口(如果服务器有墙需要打开),在下面command会出现一行配置这就相当于钥匙
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
接着我们在服务器上以该密钥运行我们项目,比如这个jar包项目: 查看服务器上启动日志,没报错的话就可以了
java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar ge.open-api-0.0.1.jar
接着我们启动这个监听,可以看到这边只能debug启动监听,在程序中打断点,我们请求服务器对应的路径就可以进行远程断点调试(这个个人觉得是十分方便的)
小结
以上就是我分享的IDEA中debug调试的具体方法,如果大家还有更好的方法或者是调试中有上面困难可以留言!