这 5 条 IntelliJ IDEA 调试技巧太强了!
一、条件断点
循环中经常用到这个技巧,比如:遍历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 调试技巧太强了!相关推荐
- 工具:分享IntelliJ IDEA 5条调试技巧,太实用了!
一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可 ...
- IntelliJ IDEA小技巧 —— 代码太乱?一键快速格式化代码
IntelliJ IDEA小技巧 -- 代码太乱?一键快速格式化代码 在使用IDEA的过程中,为了使代码看起来更整齐,可以在设置中定义代码的展示效果. 更改Java等常用代码的展示效果 1.打开ID ...
- Visual Studio原生开发的20条调试技巧(下)
我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...
- Visual Studio原生开发的20条调试技巧
我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...
- 这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!
来源:十光年 dwz.cn/zMaNp9Kf 一.条件断点 二.回到"上一步" 三.多线程调试 四.远程调试 五.临时执行表达式/修改变量的运行值 一.条件断点 循环中经常用到这个 ...
- IDEA 调试技巧,比 Eclipse 强太多了!
来源:http://suo.im/5XrIv1 一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一 ...
- IDEA 调试技巧,比 Eclipse 强太多了!
点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | J ...
- Pycharm那些隐藏的实用小技巧,太强了
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接: blog.csdn.net/zhiguigu/article/details/119 ...
- Flutter调试技巧总结——高效开发的秘密
刚开始学前端的时候看到大家都是用的console.log()作为调试的手段,也可以说,很多人只会用console.log().在学习Flutter开发app的时候,我就在思考,除了使用print()来 ...
最新文章
- PCL滤波介绍(3)
- linux shell for 循环变量,shell for循环总结
- linux下安装QQ
- 什么文件使用.md扩展名,我该如何编辑它们?
- 地...地...地震了
- I NEED A OFFER!
- java(1)——用notepad++编译java(javac.exe)
- 2020Alibaba数学竞赛预选赛第一轮参考答案
- SAP Cloud for Customer的微信集成原型开发完毕后的效果示意图
- sql行数少于10_如何用少于100行的代码创建生成艺术
- AI赋能案例—阿里云身份证OCR识别助力实现“无接触”式政务服务!
- 计算机硬件组装教学设计教案,计算机硬件的组装教学设计
- PHP计算计算时间差,php中计算时间差的几种方法
- 深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)
- Fortran代码C化或Fortran与C/C++混编过程中矩阵转置的实现
- oneday2mybatis下载
- 用域代码任何带圈字符都能做出来
- 即拿即用-Android单线程断点下载
- (一)通用定时器的相关介绍
- git 新建分支并切换到该分支_Git 从master拉取代码创建新分支 并且再将修改合并到master...
热门文章
- docker更新容器命令 ,自启
- SyntaxError: Non-UTF-8 code starting with ‘\xe9‘ in file D:/Users/wxk/PycharmProjects/xzykdx/user/12
- linux 物理内存用完了_调整linux内核尽量用内存,而不用swap
- (软件工程复习核心重点)第一章软件工程概论-第三节:软件生命周期
- 64位汇编中的布尔指令
- 使用Tensorflow实现简单线性回归
- poj2785 折半枚举 挑战程序设计竞赛
- 系统提升架构能力之10种mysql主从实践总结
- 【精辟】socket阻塞与非阻塞,同步与异步,select,pool,epool
- 基于visual c++之windows核心编程代码分析(30)Telnet协议编程