条件断点
循环中经常用到这个技巧,比如:遍历中,想让断点停在某个特定值。
见上图,在断点位置,右击会弹出一个界面,在condition中填写断点条件,在调试的时候,断点会自动在断点条件,i ==6 为 true时候停下,跳过为false的条件。
回退上一步
针对调试中一不小心错过想要查看的方法,想要重新进入刚才的断点方法,适合使用方法套方法的场景
参考上图,method1方法调用method2,当前第25行断点 ,点击下图红色箭头位置的Drop Frame图标后,瞬间回到了上一个method1
多线程调试
多线程调度顺序完全没法控制,依赖CPU的调度,如何调试多线程,避免多线程之间调试的相互影响减少多线程调试的难度
在上述3个断点处,点击右键弹出一个节目,在 suspend 上选择 Thread,即可进行线程调试
在调试的时候可以选择不同线程
选择不同线程即可选择线程进行调试
远程调试
这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下:
项目启动时,先允许远程调试
java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}
起作用的就是
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081
注意:远程调试从技术上讲,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面
idea中设置远程调试
然后就可以调试了,前提是本机有项目的源代码 ,在需要的地方打个断点,然后访问一个远程的url试试,断点就会停下来
查看执行结果/临时执行表达式/修改变量的运行值
选中需要执行的表达式,点击右键会弹出一个界面
点击执行,即可执行表达式计算结果,或者点击如下图标
调试时,可以临时执行一些表达式,参考下图:
点击+号后,就可以在新出现的输入框里输入表达式,比如i+5
然后回车,马上就能看到结果
当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value