当前位置: 首页 > 科技观察

IntelliJIDEA的调试技巧比Eclipse强多了!

时间:2023-03-11 23:17:20 科技观察

大家周末愉快,今天给大家分享一下IntelliJIDEA的高级调试技巧,大家看看有多爽,确实比Eclipse强多了!1、这种技巧常用于条件断点循环,例如:在遍历一个大List的过程中,希望断点停在某个特定的值。参考上图,在断点位置右击断点旁边的小红点,会弹出一个界面,在Condition中填写断点条件即可,这样调试的时候会自动停在该位置ofi=102.回到“上一步”。这种技巧最适用于方法和方法特别复杂的场景。使劲跑完,不小心手抖了一下,断点过去了,想回头看看刚才的变量值。如果不知道窍门,就只能重新运行了。参考上图,method1调用method2,当前断点位置j=100。点击上图中红色箭头位置的DropFrame图标后,时间又回到了method1第一次被调用的时候,变量i变成了99,老铁怎么了,不是很6吗:)注:好奇心是人类进步的阶梯。如果想知道为什么这个函数叫DropFrame而不是BackToPrevious之类的,可以去看JVM的书,JVM内部以栈帧为单位保存线程的运行状态,dropframe的意思扔掉当前运行的栈帧,这样当前的“指针”位置自然会到达上一帧的位置。3、多线程调试当多个线程同时运行时,谁先执行谁后执行完全取决于CPU的心情。无法控制顺序。runtime的时候可能没有问题,debug的时候就比较麻烦了。最明显的是断点。跳来跳去,在这个线程停一会,在另一个线程停一会,比如下图:如果你希望下一个断点位置是第二节,你可能会失望:如果你希望线程是调试好了,要按自己的意愿来,就让它停在哪个线程上。可以在图中三个断点的小红点点右键,即:Suspend挂起的条件是perthread,不是all。这样设置完这3个断点后,再试一次,注意上图中红框的位置。当断点停止时,可以在这个下拉框里看到每一个线程(注意:给线程起一个容易识别的名字是个好习惯!),我们可以选择线程“天上飞鸟”停在第二句诗如我们所愿。另外,如果想学习更多技能,可以关注微信公众号:Java技术栈,后台回复:idea,获取我整理的N篇IDEA干货。4.远程调试这也是安装B的利器,本机不需要启动工程。只要有源代码,就可以直接在本机远程调试服务器上的代码。开启姿势如下:4.1项目启动时,首先允许远程调试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通信,所以端口不能冲突,本机必须允许访问远程端口。另外这个参数要在4.2的idea中设置在-jar或者${main_class}前面,然后就可以调试了。前提是机器有项目源。代码,在需要的地方设置断点,然后尝试访问远程url,断点会停止。5、临时执行表达式/修改变量的运行值在调试时,可以临时执行一些表达式,如下图:点击这两个图标中的任意一个,点击+号,即可进入新的-在出现的框中输入一个表达式,比如i+5回车,马上就会看到结果。当然,如果你想在调试时动态修改一个变量的值,也是很容易的。右击变量,然后选择SetValue,剩下的EveryoneonEarthknowsaboutit。善用上面的调试技巧,你拿起代码的时候会感觉更加得心应手。祝您使用愉快!另外,如果想学习更多技能,可以关注微信公众号:Java技术栈,后台回复:idea,获取我整理的N篇IDEA干货。