IDEA中Debug技巧

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常所发生的位置,以及在运行过程中参数的变化。

Debug界面

以下为IDEA2022.1.3版本界面:
在这里插入图片描述
图解说明:

  • Debug模式启动 方便随时调试代码
  • 设置断点 在代码行号处单击左键,或快捷键【Ctrl+F8】在鼠标焦点行设置/取消断点
  • Debug窗口 请求到达第一个断点后,激活Debug窗口
  • 调试按钮 Debug模式过程中调式操作,总共有8个按钮,鼠标悬停在按钮上可查看对应的快捷键
  • 服务按钮 快捷操作,可查看所有断点,禁用断点等
  • 方法调用栈 显示调试过程中线程经过的调用,勾选【Show All Frames】不会显示其他类库的方法
  • 变量区 可查看当前方法当前断点前的所有变量
  • 监视区 查看变量,可将变量区的变量拖到监视区查看

基本用法

服务按钮

服务按钮从上到下依次说明:

  • Rerun ‘xxx’ 关闭程序重新运行。快捷键【Ctrl+F5】
  • Modify Run configuration 修改运行时配置信息
  • Resume Program 恢复程序,即调到下一处断点,没有断点则结束整个流程。快捷键【F9】
  • Pause Program 暂停程序
  • Stop ‘xxx’ 关闭程序。快捷键【Ctrl+F2】
  • View Breakpoints 查看所有断点。快捷键【Ctrl+Shift+F8】
  • Mure Breakpints 取消或重设断点

功能按钮

功能按钮从左往右依次说明:

  • Show Execution Point 光标重新定位到当前断点处。快捷键【Alt+F10】
  • Step Over 当前方法内一行一行往下走,不会进入到行中方法内容。快捷键【F8】
  • Step Into 当前方法内一行一行往下走,遇到行中方法就进入该方法内部,但不会进入官方库方法内。快捷键【F7】
  • Force Step Into 当前方法内一行一行往下走,遇到行中方法就进入该方法内部,包括官方库方法内。快捷键【Alt+Shift+F7】
  • Step Out 从步入的方法内退出到该方法调用处,此时方法已执行完毕,只是没有赋值。快捷键【Shift+F8】
  • Run to Cursor 运行到光标处,此时不需要打断点。快捷键【Alt+F9】
  • Evaluate Expression 计算表达式。快捷键【Alt+F8】
    Trace current Stream chain Stream 跟踪调试窗口

变量查看

  1. 在IDEA中,参数所在的行后面会显示变量的值
    在这里插入图片描述
  2. 光标悬停到参数上,显示当前变量信息
    在这里插入图片描述
  3. 在变量区里查看,显示当前方法中当前断点前所有变量的信息
    在这里插入图片描述
  4. 在监视区中查看变量数据(可直接从变量区拖变脸到监视区)
    在这里插入图片描述

查看所有断点

点击【服务按钮】中的View Breakpoints可查所有断点。快捷键【Ctrl+Shift+F8】
在这里插入图片描述
断点分类

  • Java Line Breakpoints
  • Java Exception Breakpoints
  • JavaScript Exception Breakpoints
条件断点

选择断点所在行,在断点图标右键勾选Condition或在【Breakpoints】窗口中勾选Condition,然后输入框中输出条件参数。Debug模式启动程序后,断点在参数条件成立的时候成立。
在这里插入图片描述

打印堆栈信息

在【Breakpoints】窗口中的log中选中Breakpoint hit message(断点触发信息)和Stack trace(堆栈信息),可以看到方法中的具体调用堆栈信息。
在这里插入图片描述

添加日志打印

在【Breakpoints】窗口中的选中Evaluate and log,然后在下面输入框中输入待打印的日志。
在这里插入图片描述
在这里插入图片描述

异常断点设置

在【Breakpoints】窗口的左上角,点击【+】,选择Java Exception Breakpoints。在弹出框中输入要断点的异常类。
在这里插入图片描述
在这里插入图片描述
例:添加一个空指针异常断点后,程序出现空指针异常后,自动定位到空指针异常行
在这里插入图片描述

表达式解析

点击【功能按钮】上的Evaluate Expression,填写表达式,双击或点击【evaluate】可计算结果。通常是条件判断分支后可实时解析出程序最终走哪个分支。
在这里插入图片描述
在这里插入图片描述

智能步入

一行代码中有多个方法,如何仅选择某一个方法进入。Step IntoForce Step Into进入到方法按照顺序依次执行。智能步入(Smart Step Into)则可选择方法进入。快捷键【Shift+F7】
在这里插入图片描述

中断Debug

中断Debug即中断请求,不再走后续剩余流程(强制返回方法返回值避免后续的流程)。中断Debug不需要关闭服务重新启动程序。

回退Debug

调试时,不用重新发起新的请求而直接重走流程。其实就是回退到上一个方法调用的开始处。
回退的方式有两种:

  1. Drop Frame 按调用的方法逐步回退,包括第三方类库里的方法
  2. 调用栈方法上选择要回退的方法 右键选择Drop Frame,回退到该方法的上一个方法调用处,再按【F9】即可进入方法断点处。

参考博客:IDEA的高级Debug技巧
参考视频:IDEA 断点调试高级玩法

### IntelliJ IDEA Java 多线程程序运行配置教程 #### 配置多线程项目结构 为了确保能够顺利创建并调试多线程应用程序,在开始之前应当确认项目的构建工具已正确设置。对于采用Maven作为依赖管理器的情况,需按照既定流程完成基础配置[^1]。 #### 创建新的Run/Debug Configuration 进入菜单栏中的`Run`选项卡,选择`Edit Configurations...`命令来新建一个多线程应用的启动项。在此界面中可以指定主类以及传递给JVM的相关参数: - **Name**: 输入易于识别的名字用于区分不同的配置文件。 - **Main class**: 浏览选取包含`main()`入口函数的那个类。 - **VM options (可选)**: 如果有特殊需求比如调整堆大小或是开启GC日志记录等功能,则可在该字段内加入相应的虚拟机参数。 #### 设置线程池和其他资源属性 当涉及到复杂的并发逻辑时,可能还需要额外定义一些全局性的变量或者是初始化特定的服务实例。这些操作通常放在静态代码块里执行,或者通过Spring框架等方式实现自动装配注入。 #### 启动与监控多线程进程 利用IDEA内置的任务视图(Task View),开发者不仅能看到各个子任务之间的调度关系,还能实时跟踪它们的状态变化情况。另外值得注意的是,针对可能出现的竞争条件等问题,建议合理运用断点机制辅助排查错误根源——例如借助于异常捕获型断点功能快速定位死锁位置等场景[^2]。 ```java public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(5); Runnable task = () -> System.out.println(Thread.currentThread().getName() + " is running"); for(int i=0;i<10;i++){ executor.submit(task); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值