IDEA Debug断点调试技巧详解

一、使用条件断点定位问题

1、条件断点可以帮助我们定位一些奇怪的报错或程序行为。

2、在IDEA调试窗口中选中需要条件断点的代码行,右键-Add breakpoint-Condition

// 举例代码段
public class Test {
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println(sum); 
    }
}

3、条件输入框中添加布尔型的条件表达式

// 举例代码段的条件断点示例
public class Test {
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1; i <= 100; i++) {
            sum += i;
            if(i == 50) {
                System.out.println(sum); 
            }
        }
        System.out.println(sum); 
    }
}

二、日志断点记录流程信息

1、日志断点可以记录程序的流程信息,例如调用了哪些方法或者程序执行时间等。

2、在IDEA调试窗口中选中需要日志断点的代码行,右键-Add breakpoint-Log message

// 举例代码段的日志断点示例
public class Test {
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1; i <= 100; i++) {
            sum += i;
            System.out.println("i = " + i + ", sum = " + sum); //断点
        }
        System.out.println(sum); 
    }
}

3、在“Log Expression”输入框中输入需要记录的信息,在“More”选项中可以设置输出日志等级。

三、动态调试操作

1、调试过程中可以动态地调整程序的行为。

2、在IDEA调试窗口中右键选中需要动态调整的代码行,选择Evaluate expression或者Watch选项卡。

// 举例代码段的动态调试示例
public class Test {
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1; i <= 100; i++) {
            if(i % 2 == 0) {
                sum += i;
            }
            System.out.println(sum); // 断点
        }
    }
}

3、在“Evaluate expression”输入框中输入想要修改的变量值,例如:sum=10,点击”Enter”或选择”Evaluate”。

四、多线程调试

1、多线程并发调试需要注意多线程间的同步。

2、在IDEA调试窗口中,选择“View breakpoint”,选定“Java Exception Breakpoints”,选中“Synchronized”项。

// 举例代码段的多线程并发调试示例
public class TestThread extends Thread {
    public static void main(String[] args) {
        TestThread thread1 = new TestThread();
        TestThread thread2 = new TestThread();
        thread1.start();
        thread2.start();
    }
    public synchronized void run() {
        for(int i=0;i<5;i++) {
            try {
                sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
            System.out.println(Thread.currentThread().getName() + "-" + i);
        }
    }
}

3、使用并发测试工具来验证多线程并发的结果是否正确。

五、利用IDEA的快捷键加速调试

1、提高调试效率,掌握IDEA的快捷键是必须的。

2、常见快捷键如下:

Ctrl+F8 : 跳过断点

Ctrl+Shift+F9 : 运行程序至光标所在代码行

Ctrl+Alt+Shift+R : 运行程序至光标所在代码行并打开Debug窗口

F8 : 单步运行

Shift+F8 : 跳过当前行,进入下一行

F7 : 进入当前行调用的方法

Shift+F7 : 跳过当前方法

Alt+F9 : 运行至光标所在行方法结束

Alt+F8 : 在Debug模式中计算表达式

3、快捷键可以根据个人喜好自定义。

原创文章,作者:SDFC,如若转载,请注明出处:https://www.506064.com/n/148556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
SDFCSDFC
上一篇 2024-11-03 15:16
下一篇 2024-11-03 15:17

相关推荐

  • Idea新建文件夹没有java class的解决方法

    如果你在Idea中新建了一个文件夹,却没有Java Class,应该如何解决呢?下面从多个方面来进行解答。 一、检查Idea设置 首先,我们应该检查Idea的设置是否正确。打开Id…

    编程 2025-04-29
  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • IDEA Java发送邮件出现错误解决方案

    IDEA Java是一款常用的Java开发工具,很多开发者都使用它来开发Java应用程序。然而,在使用IDEA Java发送邮件时,有可能会出现一些错误。本文将从多个方面对该错误进…

    编程 2025-04-29
  • Idea中基于某个分支拉新的分支

    本文将从以下几个方面介绍Idea中基于某个分支拉新的分支: 一、创建新分支 在Idea的Git工具中,可以方便地从某个分支创建新分支: git checkout -b <ne…

    编程 2025-04-29
  • 优秀周记1000字的撰写思路与技巧

    优秀周记是每个编程开发工程师记录自己工作生活的最佳方式之一。本篇文章将从周记的重要性、撰写思路、撰写技巧以及周记的示例代码等角度进行阐述。 一、周记的重要性 作为一名编程开发工程师…

    编程 2025-04-28
  • Idea创建模块时下面没有启动类的解决方法

    本文将从以下几个方面对Idea创建模块时下面没有启动类进行详细阐述: 一、创建SpringBoot项目时没有启动类的解决方法 在使用Idea创建SpringBoot项目时,有可能会…

    编程 2025-04-28
  • 如何通过IDEA设置gradle的heap大小

    在IDEA中设置gradle的heap大小可以有效提高gradle编译、运行等使用效率,本文将从以下几个方面介绍如何通过IDEA设置gradle的heap大小。 一、设置gradl…

    编程 2025-04-28
  • 堆叠图配色技巧分享

    堆叠图是数据可视化中常用的一种表现形式,而配色则是影响堆叠图观感和传达信息的重要因素之一。本文将分享一些堆叠图配色的技巧,帮助你创造更好的数据可视化。 一、色彩搭配原则 色彩是我们…

    编程 2025-04-27
  • 解决idea addconfiguration没有tomcat

    本篇文章将为大家详细介绍如何解决使用idea addconfiguration时没有tomcat选项的情况。 一、检查安装路径 首先,我们需要检查tomcat是否已经在我们的电脑上…

    编程 2025-04-27
  • 使用uring_cmd提高开发效率的技巧

    对于编程开发工程师来说,提高效率一直是致力追求的目标。本文将深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一个非常强大的命令行工具,但是大部…

    编程 2025-04-27

发表回复

登录后才能评论