一、条件断点

循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置

二、回到"上一步"

该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。

参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了

回到了method1刚开始调用的时候,变量i变成了99,没毛病吧,老铁们,是不是很6 :)

注:好奇心是人类进步的阶梯,如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous 之类的,可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。

对了,我还发布过一些关于 IDEA 文章,包括 IDEA 插件、快捷键、不为人知的操作、调试教程等,可关注微信公众号 Java后端, 关注后回复 666 下载这一本技术栈手册。

三、多线程调试

多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,比如下图:

如果想希望下一个断点位置是第2句诗句,可能要失望了:

如果想让线程在调试时,想按自己的愿意来,让它停在哪个线程就停在哪个线程,可以在图中3个断点的小红点上右击,

即:Suspend挂起的条件是按每个线程来,而非All。把这3个断点都这么设置后,再来一发试试

注意上图中的红框位置,断点停下来时,这个下拉框可以看到各个线程(注:给线程起个容易识别的名字是个好习惯!),我们可以选择线程“天空中的飞鸟”

断点如愿停在了第2句诗。

四、远程调试

这也是一个装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通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面

4、2 idea中设置远程调试

然后就可以调试了

前提是本机有项目的源代码 ,在需要的地方打个断点,然后访问一个远程的url试试,断点就会停下来。

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

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

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

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

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

善用上述调试技巧,相当大家撸起代码来会更有感觉!

作者:十光年

链接:www.cnblogs.com/jun1019/p/9741224.html

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

这 5 条 IntelliJ IDEA 调试技巧太强了!相关推荐

  1. 工具:分享IntelliJ IDEA 5条调试技巧,太实用了!

    一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可 ...

  2. IntelliJ IDEA小技巧 —— 代码太乱?一键快速格式化代码

    IntelliJ IDEA小技巧 --  代码太乱?一键快速格式化代码 在使用IDEA的过程中,为了使代码看起来更整齐,可以在设置中定义代码的展示效果. 更改Java等常用代码的展示效果 1.打开ID ...

  3. Visual Studio原生开发的20条调试技巧(下)

    我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...

  4. Visual Studio原生开发的20条调试技巧

    我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...

  5. 这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!

    来源:十光年 dwz.cn/zMaNp9Kf 一.条件断点 二.回到"上一步" 三.多线程调试 四.远程调试 五.临时执行表达式/修改变量的运行值 一.条件断点 循环中经常用到这个 ...

  6. IDEA 调试技巧,比 Eclipse 强太多了!

    来源:http://suo.im/5XrIv1 一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一 ...

  7. IDEA 调试技巧,比 Eclipse 强太多了!

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | J ...

  8. Pycharm那些隐藏的实用小技巧,太强了

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接: blog.csdn.net/zhiguigu/article/details/119 ...

  9. Flutter调试技巧总结——高效开发的秘密

    刚开始学前端的时候看到大家都是用的console.log()作为调试的手段,也可以说,很多人只会用console.log().在学习Flutter开发app的时候,我就在思考,除了使用print()来 ...

最新文章

  1. PCL滤波介绍(3)
  2. linux shell for 循环变量,shell for循环总结
  3. linux下安装QQ
  4. 什么文件使用.md扩展名,我该如何编辑它们?
  5. 地...地...地震了
  6. I NEED A OFFER!
  7. java(1)——用notepad++编译java(javac.exe)
  8. 2020Alibaba数学竞赛预选赛第一轮参考答案
  9. SAP Cloud for Customer的微信集成原型开发完毕后的效果示意图
  10. sql行数少于10_如何用少于100行的代码创建生成艺术
  11. AI赋能案例—阿里云身份证OCR识别助力实现“无接触”式政务服务!
  12. 计算机硬件组装教学设计教案,计算机硬件的组装教学设计
  13. PHP计算计算时间差,php中计算时间差的几种方法
  14. 深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)
  15. Fortran代码C化或Fortran与C/C++混编过程中矩阵转置的实现
  16. oneday2mybatis下载
  17. 用域代码任何带圈字符都能做出来
  18. 即拿即用-Android单线程断点下载
  19. (一)通用定时器的相关介绍
  20. git 新建分支并切换到该分支_Git 从master拉取代码创建新分支 并且再将修改合并到master...

热门文章

  1. docker更新容器命令 ,自启
  2. SyntaxError: Non-UTF-8 code starting with ‘\xe9‘ in file D:/Users/wxk/PycharmProjects/xzykdx/user/12
  3. linux 物理内存用完了_调整linux内核尽量用内存,而不用swap
  4. (软件工程复习核心重点)第一章软件工程概论-第三节:软件生命周期
  5. 64位汇编中的布尔指令
  6. 使用Tensorflow实现简单线性回归
  7. poj2785 折半枚举 挑战程序设计竞赛
  8. 系统提升架构能力之10种mysql主从实践总结
  9. 【精辟】socket阻塞与非阻塞,同步与异步,select,pool,epool
  10. 基于visual c++之windows核心编程代码分析(30)Telnet协议编程