当前位置: 首页 > news >正文

【idea】调试篇 idea调试技巧合集

前言:之前博主写过一篇idea技巧合集的文章,由于技巧过于多了,文章很庞大,所以特地将调试相关的技巧单独成章, 调试和我们日常开发是息息相关的,用好调试可以事半功倍

文章目录

    • 1. idea调试异步线程
    • 2. idea调试stream流
    • 3. 根据条件进入断点
    • 4. 调试当前代码行
    • 5. 修改变量值调试
    • 6. 监控断点

1. idea调试异步线程

默认idea是调试主线程的,如果开启了异步线程 打断点不会进入,这在我们调试源码时不方便(例如redisson的源码会有大量异步线程的操作)

我们只需要在断点右键 在Supend选择Thread
(要注意的是 选择Thread的断点需要全面 例如A线程之后的代码开启了异步线程B,异步线程B下面有异步线程C的代码 断点需要在A/B/C线程都选上Thread 否则仍然不会进入C)
在这里插入图片描述

2. idea调试stream流

idea2024是非常方便调试的,不用额外操作;
在早些版本中:点击Trace Current Stream Chain 查看流的每步操作
在这里插入图片描述

3. 根据条件进入断点

断点右键写上Condition条件表达式即可,这在循环调试中非常方便,举个栗子:
在这里插入图片描述
直接跳过了前面无关数据

4. 调试当前代码行

我们用例子来解释是什么意思:

如下图 我们模拟了两个断点
在这里插入图片描述
一般情况下 我们会选择打多个断点 一步步调试,执行完第一个断点后,我们通常点击 跳到下一个断点
在这里插入图片描述
经常调试源码的同学应该深有体会,断点打一堆后会多不方便;拿jdk源码来说,在某个方法打上一个断点,有N多其它线程可能执行到断点。

那我们有没有什么方式 不打断点也能调试呢? 有的,有的,确实有的:
鼠标光标放在要调试的那行代码,按 ctrl + alt + F9
(博主idea用的是eclipse的那套快捷键,如果不是用的这套快捷键 不生效的话 试试 alt + F9 )
在这里插入图片描述
如上图,不打断点 仍然可以调试

5. 修改变量值调试

我们还是拿一个循环来举例:
我们不想关心 i<9 的逻辑时,可以在调试时 右键选择 evaluate expression
在这里插入图片描述
在expression时直接修改变量
在这里插入图片描述

6. 监控断点

监控断点是打在全局变量上面的断点,每当变量值发生变化的时候 都会有提示:

如图,我们只在定义变量时手动打上断点:
在这里插入图片描述

随着我们执行代码,在变量发生修改时 会自动提示:
在这里插入图片描述


public class DebugTest {static String name = "";public static void main(String[] args) {name = "csdn:孟秋与你";DebugInnerTest debugInnerTest = new DebugInnerTest();name = debugInnerTest.modifyName(name);System.out.println(name);}
}class DebugInnerTest {public String modifyName(String name) {return "修改名";}
}

因为局部变量的生命周期仅在其作用域内有效(如函数、循环等),IDEA 无法直接在局部变量上设置独立的数据断点(监视值变化);在实际开发时,如果遇到某个方法内部的局部变量值很难调试 想监听时,那把它先定义成全局变量即可 调试完再改回去。

相关文章:

  • 第五部分:第二节 - Node.js 核心模块:厨房里的基本工具
  • 显示的图标跟UI界面对应不上。
  • 无人机数据处理与特征提取技术分析!
  • Thrust库中的Gather和Scatter操作
  • 【Linux】第十六章 分析和存储日志
  • uniapp vue 沉浸式窗体如何获取并排除外部手机浏览器底部菜单栏工具栏高度
  • sqli—labs第六关——双引号报错注入
  • 小白学习java第18天(上):spring
  • 【C++】17. 多态
  • 大型企业数据治理与数据资产化:数字化转型的炼金术革命
  • 如何解决电脑蓝屏错误代码:Oxc0000098
  • 鸿蒙OSUniApp开发支持多语言的国际化组件#三方框架 #Uniapp
  • elementUI调整滚动条高度后与固定列冲突问题解决
  • 高海拔和远距离的人员识别:面部、体型和步态的融合
  • Java 源码 HashMap源码分析
  • PROE 转 STP 全攻略:软件实操、在线转换与问题解决
  • 【网工第6版】第10章 网络规划和设计②
  • D. Eating【Codeforces Round 1005 (Div. 2)】
  • 微机原理与接口技术知识点总结——8086微处理器ddddd
  • 16 - VDMA之视频转发实验
  • 株洲一重病妇女被要求本人到银行取款时去世?当地警方:正在处理
  • 坚持吃素,是不是就不会得高血脂了?
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 讲武谈兵|视距外的狙杀:从印巴空战谈谈超视距空战
  • 王征、解宁元、牛恺任西安市副市长
  • 王毅谈中拉命运共同体建设“五大工程”及落实举措