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

【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 无法直接在局部变量上设置独立的数据断点(监视值变化);在实际开发时,如果遇到某个方法内部的局部变量值很难调试 想监听时,那把它先定义成全局变量即可 调试完再改回去。

http://www.lryc.cn/news/2379340.html

相关文章:

  • 二叉树深搜:在算法森林中寻找路径
  • golang 安装gin包、创建路由基本总结
  • BMVC2023 | 多样化高层特征以提升对抗迁移性
  • 有哪些GIF图片转换的开源工具
  • C++—特殊类设计设计模式
  • Android 手写签名功能详解:从原理到实践
  • Level2.8蛇与海龟(游戏)
  • 【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块
  • 【Canvas与诗词】醉里挑灯看剑 梦回吹角连营
  • Hue面试内容整理-Hue 架构与前后端通信
  • Linux搜索
  • Git基础原理和使用
  • 实现视频分片上传 OSS
  • 网络I/O学习(一)
  • 4:OpenCV—保存图像
  • Selenium-Java版(css表达式)
  • 产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
  • 深度学习让鱼与熊掌兼得
  • TDuckX 2.6 正式发布|API 能力开放,核心表单逻辑重构,多项实用功能上线。
  • LeetCode Hot100刷题——除自身以外数组的乘积
  • JAVA EE(进阶)_进阶的开端
  • PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
  • Go语言交替打印问题及多种实现方法
  • ArcGIS Pro调用多期历史影像
  • 10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
  • 组态王|组态王中如何添加西门子1200设备
  • 发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
  • 6.2.2邻接表法-图的存储
  • C++23 放宽范围适配器以允许仅移动类型(P2494R2)
  • 【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer