IDEA常用的Debug技巧

这篇具有很好参考价值的文章主要介绍了IDEA常用的Debug技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概述

IDEA是Java程序员必备的IDE,非常强大的功能,搭配很多插件的时候就可以增强它的功能,开发出现异常的时候利用好Debug可以做到排查问题可以事半功倍。

2. 如何使用Debug ?

2.1 打断点

断点:指可以让程序中断(暂停)的地方,方便进行调试分析👍。

在行号右边“点击”,出现红色圆点即可打上断点。

IDEA常用的Debug技巧

2.2 开启Debug模式

2.2.1 单元测试下

开启Debug模式运行

IDEA常用的Debug技巧

2.2.2 SpringBoot应用下

开启调试模式

IDEA常用的Debug技巧

2.3 重新执行

点击如下按钮,即可重新运行调试。

IDEA常用的Debug技巧

2.4 跳到下一断点

点击如下按钮可以跳到,下一断点处。

IDEA常用的Debug技巧

3. 按钮和快捷键说明

3.1 横排按钮(从左往右,偏向定位)

IDEA常用的Debug技巧
详细说明:

按钮 功能 快捷键 说明
Show Execution Point Alt + F10 如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。
Step Over 步过 F8 一行一行地往下走,如果这一行上有方法不会进入方法。
Step Into 步入 F7 如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
Force Step Into 强制步入 Alt + Shift + F7 能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
Step Out 步出 Shift + F8 从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
Drop Frame 回退断点
Run to Cursor 运行到光标处 Alt + F9 将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
Evaluate Expression 计算表达式 Alt + F8 打开计算表达式面板

3.2 竖排按钮(从上往下,偏向过程)

IDEA常用的Debug技巧

按钮说明

按钮 功能 快捷键 说明
Rerun ‘xxxx’ 重新运行 重新运行程序,会关闭服务后重新启动程序。
Resume Program 恢复程序 F9 跳到下一个断点,都是按照断点维度来跳。
Pause Program 暂停程序 暂停程序,启用Debug。
Stop ‘xxx’ 关闭程序 Ctrl + F2 连续按两下,关闭程序。有时候你会发现关闭服务再启动时,报端口被占用,这是因为没完全关闭服务的原因,你就需要查杀所有JVM进程了。
View Breakpoints 查看所有断点 Ctrl + Shift + F8 查看所有断点
Mute Breakpoints 哑的断点 选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。如果只想使某一个断点失效,可以在断点上右键取消Enabled

4. 断点

4.1 行断点

在对应的代码行号上添加端点,可以在断点所在行进行暂停。

4.2 方法断点

功能
在方法入口(entry)和出口(exit)都会自动暂停。在方法入口暂停可以让我们从头调试整个方法,而在方法出口处暂停可以让我们看到方法执行完毕时,方法内各个变量的数据情况。

有时候我们的一个接口会存在很多实现类,我们短时间内难以分析究竟是运行到了哪个实现类中,这个时候就可以使用方法断点,我们将断点打在接口方法上,运行到该方法时,会自动跳到实际执行的实现类,无需通过上下文环境去分析是哪个实现类。

在方法名所在的行打上断点

IDEA常用的Debug技巧

点击“方法断点”按右键,弹出设置选项

IDEA常用的Debug技巧

4.3 字段断点

功能

在字段发生变更(默认)或者被访问(需要额外设置)时暂停。

如果我们想知道某个属性在什么时候被修改,从入口处开始调试太麻烦,我们可以直接在字段上打上字段断点,这样字段被修改的时候就会自动暂停。

在类属性行上添加的断点
IDEA常用的Debug技巧

点击“字段断点”右击弹出监听配置:

IDEA常用的Debug技巧

4.4 异常断点

功能

可以在抛出异常的地方进行暂停

异常断点是无需在具体的代码上打断点的,而是在断点详情页中直接添加,后续在执行时,如果抛出我们监听的异常,则会自动暂停在抛出异常的地方。

IDEA常用的Debug技巧

产生的异常断点如下:

IDEA常用的Debug技巧

5. 降帧

功能
当我们 Debug 从 A 方法进入 B 方法时,通过降帧(退帧)可以返回到调用 B 方法前,这样我们就可以再一次调用 B 方法。
通常用于当我们快执行完 B 方法后,发现某个重要流程被我们跳过了,想再看一下,则此时可以先回退到 A 方法,然后再次进入 B 方法。

我们知道方法的执行和结束在 JVM 中对应的是栈帧的入栈和出栈,因此栈帧描述的就是方法对应的模型,而降帧(退帧)则对应的就是回退到上一个方法。

案例:
在单元测试内部调用service的getSalary()方法时,getSalary()内部有两个断点,最终停留在第50行的断点的时候,步出和退帧的区别在于

  • 步出:仅仅是返回上一个断点,也就是还在TestServiceImpl内部的49行的断点处。
  • 退帧:返回的单元测试类的testThrowExceptionBreakPoint()中的断点处。

IDEA常用的Debug技巧
IDEA常用的Debug技巧

6. 断点条件

功能

当程序执行到断点位置时,需要 Condition 中的表达式返回 true,才会暂停,否则会直接跳过。

用于断点所在的地方执行次数过多时,避免浪费时间在不想关注的流程上。例如我们有一个 Spring bean 的初始化存在问题,我们想跳过其他 bean 的初始化流程,则可以在初始化的入口设置 beanName.equals(“”) 表达式,来达到只在我们关注的 bean 执行时才暂停。

添加断点条件
IDEA常用的Debug技巧

查看断点处的变量值:

IDEA常用的Debug技巧

7. 强制返回

功能

强制结束当前程序运行流程,直接返回。

IDEA常用的Debug技巧

  • 当我们调试时,发现继续往下执行就要将错误的数据写入数据库时,我们可以通过 Force Return 来强行结束当前流程。
  • 而如果我们是通过 Stop 按钮来结束,此时结束的是 Debug 流程,而程序流程还是会往下执行,从而将错误数据写入数据库。

IDEA常用的Debug技巧

8. Stream调试

功能

当我们暂停在 Stream 的处理代码行时,可以将 Stream 的整个处理流程以图形化界面的形式展示。

IDEA常用的Debug技巧

9. 执行表达式

功能

用于执行一段我们实时写的代码,例如查看数据、修改数据。

IDEA常用的Debug技巧

当我们在测试时,发现某段代码逻辑很难有符合条件的数据时,可以通过该功能直接修改数据,来加快我们的测试。

该功能非常强大,我们可以在这边执行任何逻辑,举个例子:可以将数据保存到数据库、可以发送一个RPC请求等等。

10. 多线程调试

Suspend 有两种模式:All 和 Thread。

  • Thread:暂停进入断点的线程,不影响其他线程执行,所有进入断点的线程依次Debug。
  • All:暂停全部线程。只能 Debug 第一个暂停线程。

@Test
    public void testThreadsBreakPoints() throws InterruptedException {
       new Thread(() -> {
           System.out.println("线程 1 start...");
           System.out.println("线程 1 end!");
       }).start();

        new Thread(() -> {
            System.out.println("线程 2 start...");
            System.out.println("线程 3 end!");
        }).start();

        System.out.println("主线程 end");
        Thread.sleep(10000);

    }

Thread模式下

通过输出内容,可以看到线程1被阻塞,线程2和主线程都已经执行结束

IDEA常用的Debug技巧

All模式下

可以看到线程2和主线程没有使用断点,但是也被暂停了,因为没有输出内容。
IDEA常用的Debug技巧

参考文档:

https://blog.csdn.net/qq_43102730/article/details/125252811文章来源地址https://www.toymoban.com/news/detail-458229.html

到了这里,关于IDEA常用的Debug技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • idea 工作中常用的 git 技巧: ChangeList,Stash Changes

    在使用idea提交代码的时候,经常会遇到配置文件和工具类或者测试类不想commit的情况。 但每次commit都会因为各种文件混在一起,需要仔细看。 这个时候,需要用到ChangeList。 在commit的弹出的文件界面里,选中你不想commit的文件,右键,move to another changelist,给这个changelist取

    2024年02月03日
    浏览(41)
  • Pycharm Debug调试技巧

    Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。 常见的Python Bug包括: 语法错误:例如拼写错误、缺少冒号、使用了错误的缩进等等。 逻辑错误:程序可以运行,但是它并没有如预期那样工作。这通常是因

    2024年02月09日
    浏览(47)
  • Keil Debug 串口调试技巧

    更改对应的bebug窗口参数 两边的 Dialog DLL 更改为:DARMSTM.DLL 两边的 Parameter (这里的根据单片机型号更改)更改为:-pSTM32F103VE 选择左边的 Use Simulator 选项。 串口打印 打开窗口 窗口位置 只要运行就可以查看了 在命令串口键入:MODE COM1 115200, 0, 8, 1 回车 再输入:ASSIGN COM1 S1I

    2024年02月06日
    浏览(43)
  • 前端网页开发debug调试基础技巧

    Google Chrome 浏览器提供了许多快捷键,以帮助用户更高效地浏览网页和使用浏览器功能。以下是一些常用的Chrome快捷键: 标签页和窗口管理 Ctrl + T (Windows/Linux) / Cmd + T (Mac): 打开新标签页 Ctrl + N (Windows/Linux) / Cmd + N (Mac): 打开新窗口 Ctrl + Shift + N (Windows/Linux) / Cmd + Shift + N (Mac):

    2024年04月28日
    浏览(35)
  • 【idea性能篇】性能稳定、更好用的idea

    工欲善其事,必先利其器。idea作为Java程序员们工作中,打交道最多的软件,如果有过大量微服务项目同时开启开发的经验的程序员,想必会对idea是又爱又恨,过高的内存占用,运行时间长后idea响应迟钝,甚至无响应,简直令人抓狂。下面我们来让我们的idea变得更加好用吧

    2024年02月08日
    浏览(43)
  • IDEA远程DeBug调试

    1. 介绍 当我们在开发过程中遇到一些复杂的问题或需要对代码进行调试时,远程调试是一种非常有用的工具。使用 IntelliJ IDEA 进行远程调试可以让你在远程服务器上的应用程序中设置断点、查看变量和执行调试操作。 远程调试的好处如下: 提供更方便的调试环境:通过远程

    2024年02月11日
    浏览(51)
  • idea远程debug

    有时候我们需要进行远程的debug,本文研究如何进行远程debug,以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 1.配置idea  如图,依次点击或者填写对应的ip和端口,需要debug的服务 2.修改启动命令 选择 jdk 5-8,则为 -agentlib:jdwp=transport=dt_socket,server=y,susp

    2024年02月07日
    浏览(47)
  • Idea实现远程debug调试

    2024年04月26日
    浏览(46)
  • Idea断点调试(debug)详解

    打断点: 鼠标左键点击这里就会出现一个红点标志 (有各种形状,后续解释),就打上了一个断点。 启动: 对于已经运行过的程序,直接点击,小虫子就能启动 对于没有运行过的程序,找到程序入口(main方法)前面的三角形 ,鼠标右键启动 启动后,当我们的程序执行到

    2024年02月08日
    浏览(58)
  • idea的debug断点的使用

    添加断点(目前不知道如何添加断点,就给AutoConfigurationImportSelector的每个方法都加上断点):                  然后将StockApplication启动类以debug方式运行,然后程序就会停在119行 点击上边的step over 让程序往下运行一行(但是因为在isEnabled方法中添加了断点,所以会进入到

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包