IDEA工具第九篇:6个让你爱不释手的Debug技巧
一、条件断点
循环中经常用到这个技巧,比如:遍历1个大集合或者数组的过程中,想让断点停在某个特定值。
【操作】debug运行指定方法后
| 在Debug小红点上右键
| Condition输入条件
| Done

二、返回上一步
该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,“下一步”按快了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。
【操作】debug运行指定方法后
| 在Debug面板有三个竖着的小点
| Reset Frame
⚠️⚠️⚠️IDEA 2022.1版本之后叫 Reset Frame,之前叫 Drop Frame

三、多线程调试
多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情,无法控制先后,运行时可能没什么问题,但是调试时最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,很是麻烦。
•默认情况下

•三个断点都挂起时,如愿的可以想在哪个断点处停留就在那里停留😜


四、远程调试
远程调试从技术上讲,就是在本机与远程建立scoket通讯,所以端口一定不要冲突且不能被占用,而且本机要允许访问远程端口
•增加一个远程配置:
Edit Configuration
| +
| Remote JVM Debug

•配置详细说明

•启动脚本配置

•远程服务器启动要加上以下内容(内容来源于上面选择不同JDK生成的命令)
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
•细节注意
①停在本地断点,关闭程序后会继续向下执行;
②像log日志打印只会打印在远程系统上;
③调试远程时,其他人访问调试接口时会卡在断点处;
五、临时执行表达式
调试时,可以临时执行一些表达式,针对变量作数学运算

六、临时修改变量运行值
调试时,想动态修改变量值,也很容易,在要修改的变量上右键 | Set value | 回车
