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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟秋与你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值