在IDEA进行项目开发的过程中,摸索的调试相关的小技能,记录一下留作以后复习。
断点
在写程序过程中,对某个值,或者某个地方想确定传值是否正常的时候就可以在对应的代码行前面标一个红点。通过点击操作栏的小虫子按钮,进入调试模式(默认快捷键是Alt+Shift+F9)。
条件断点
一般是用于查看集合,map,数组等结构中的某个条件的某个值。
首先要做点打一个点,然后右键点这个点,把需要的条件写在condition下面的方框里即可。不使用这个条件的时候可以点condition前面的框,取消条件。
回退到上一步
该功能可以在错过某个断点的时候回退用的。
通过点击这个红色的Drop Frame按钮,可以回退到之前的状态
多线程调试
多线程在同时运行时,谁先执行,谁后执行,完全是按照cpu的相关控制算法,运行时可能没问题,但是调试时就比较麻烦了,最明显的就是断点乱跳。解决办法就是在需要调试的位置加上条件:
注:Suspend挂起的条件是按每个线程来,而非All。把这3个断点都这么设置后
远程调试
这也是一个装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中设置远程调试
然后就可以调试了
临时执行表达式/修改变量的运行值
调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以
点击+号后,就可以在新出现的输入框里输入表达式,比如i+5
然后回车,马上就能看到结果
当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。