一、条件断点

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

条件断点

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

条件断点

二、回到"上一步"

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

退回上一步

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

退回上一步

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

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

三、多线程调试

多线程同时运行时,谁先执行,谁后执行,完全是看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,剩下的事,地球人都知道。

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

python三个箭头怎么打出来_IntelliJ IDEA 调试真香技巧相关推荐

  1. android 屏幕 占空比,手机选购漫谈 篇三:LCD永不为奴,还是OLED真香?深究 “瞎眼” 的PWM调光...

    手机选购漫谈 篇三:LCD永不为奴,还是OLED真香?深究 "瞎眼" 的PWM调光 2018-10-30 15:00:00 702点赞 1681收藏 551评论 在上一篇中,咱们聊 ...

  2. 2020年最好用的手机是哪一款_2020年值得入手的三款手机,性价比超高,网友:真香!...

    新的一年已步入2月底,部分手机厂商已在新的一年发布新的智能机了,但作为消费者来说,价格越贵就一定越好吗?价值决定价格,价格贵确实有贵的道理,可并非便宜就没有好货,有部分手机的性价比还是非常高的,价格也 ...

  3. python三个箭头怎么打出来_(Python3)Linux和Windows箭头键按下

    我一直在寻找一段时间,现在遍布互联网,但我似乎找不到一个独特的方式为Linux和Windows,允许捕捉箭头上下,等事件.(Python3)Linux和Windows箭头键按下 随着msvcrt包在W ...

  4. python三个箭头怎么打出来_如何用箭头键在Python 3中移动海龟

    我有解决办法给你.代码并不理想,但它可以工作,您可以对其进行处理.你必须意识到,乌龟的位置不好,你必须调整它.这就是为什么我在设置方法我的乌龟抬头. 现在,您必须记住,right(deg)和left( ...

  5. python批量处理excel数据_Python批量处理Excel,真香(超实用!)

    本文介绍了利用Python批量处理Excel文件的一种方法,超实用,超简单.轻松可实现,节省时间不只一点点.文章不长,功能超强. 上菜. 某一天,老板丢个我一个任务.需要将400多张表按照一定条件进行 ...

  6. python 三引号_Python 字符串

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var2 ...

  7. python三引号 内部变量_python在三引号中使用变量

    1.定义和运算: 变量名 = 值 定义变量举例: # 定义一个变量 myCar = "比亚迪F0" # 输出一个变量 print(myCar) 变量之间的简单运算举例: price ...

  8. python三大器_Python - 三大器 迭代器,生层器,装饰器

    Python - 三大器 迭代器,生层器,装饰器 在介绍三大器之前先来了解一下容器和可迭代对象... 一. 容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, ...

  9. Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n

    Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...

最新文章

  1. 安装rebar时提示Uncaught error in rebar_core
  2. 合成孔径雷达技术——概述
  3. Google App Engine平台下JDOQL查询报异常的问题解决方案
  4. linux tcp 创建,Linux下tcp服务器创建的步骤
  5. LeetCode 1111. 有效括号的嵌套深度(奇偶分离)
  6. B2.Java代码查错
  7. win7 64位运行不了服务器,G6-e标准包可以装在win7 64位系统上吗?现在提示不能登陆到服务器...
  8. c mysql中文乱码解决方案_Linux下c读取MysqL中文乱码解决方案
  9. 使用 GNU CC 的预编译头文件加快编译速度
  10. xv6实验课程--系统调用
  11. 用c#实现 catia插件speos的部分功能
  12. CnPack20090801更新包
  13. Android studio 使用阿里巴巴图标矢量图库
  14. C语言实现循环缓冲fifo及总结
  15. 计算机原理ms md,初学MD,请教大家一下计算的流程及相关问题 - 第 2 页 - 第一原理 - 小木虫 - 学术 科研 互动社区...
  16. 泛泰A870(高通600 cpu 720p) 刷4.4专用中文recovery TWRP2.7.1.1版(三版通刷)
  17. android刷win8,驰为VX8 3G Win8刷安卓系统固件教程发布
  18. 【每日随笔】记录完整的劳动仲裁过程 一 ( 赢火虫律师平台 | 赢火虫手机端跟进案件信息 | 等待律师接单 | 提交信息给律师 )
  19. 关于未将对象引用设置到对象实例简单原理分析,与解决方法
  20. 修改管理员信息php,修改管理员_ThinkPHP_大笨熊_IT技术平台

热门文章

  1. 海云安首席科学家齐大伟博士荣获“2023国际软件工程会议(ICSE)最具影响力论文奖”
  2. 在网站添加客服QQ,打开临时会话框(不用加为好友)
  3. java遍历是什么意思_详解java中多种通用遍历方式
  4. 解决rtl8723be无线网卡驱动频繁断网问题
  5. 《改变你一生的108个心理学法则》读书笔记
  6. 关于感恩老师的至理名言
  7. ProcessDB实时/时序数据库——C/C++连接数据库
  8. 看不到淘宝部分图片,只能看youku视频
  9. 算法总结-二分查找算法
  10. atexit函数和on_exit函数