在IDEA进行项目开发的过程中,摸索的调试相关的小技能,记录一下留作以后复习。

断点

在写程序过程中,对某个值,或者某个地方想确定传值是否正常的时候就可以在对应的代码行前面标一个红点。通过点击操作栏的小虫子按钮,进入调试模式(默认快捷键是Alt+Shift+F9)。

lua设置条件断点_java

条件断点

一般是用于查看集合,map,数组等结构中的某个条件的某个值。

首先要做点打一个点,然后右键点这个点,把需要的条件写在condition下面的方框里即可。不使用这个条件的时候可以点condition前面的框,取消条件。

lua设置条件断点_java_02

回退到上一步

该功能可以在错过某个断点的时候回退用的。

lua设置条件断点_多线程_03


通过点击这个红色的Drop Frame按钮,可以回退到之前的状态

lua设置条件断点_远程调试_04

多线程调试

多线程在同时运行时,谁先执行,谁后执行,完全是按照cpu的相关控制算法,运行时可能没问题,但是调试时就比较麻烦了,最明显的就是断点乱跳。解决办法就是在需要调试的位置加上条件:

lua设置条件断点_多线程_05


注: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中设置远程调试

lua设置条件断点_多线程_06


然后就可以调试了

lua设置条件断点_lua设置条件断点_07

临时执行表达式/修改变量的运行值

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

lua设置条件断点_多线程_08


点击+号后,就可以在新出现的输入框里输入表达式,比如i+5

lua设置条件断点_多线程_09


然后回车,马上就能看到结果

lua设置条件断点_java_10


当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

lua设置条件断点_多线程_11