IDEA 断点小知识

news/2025/2/25 1:20:02

在DEBUG的时候,常常遇见这几种场景:

  1. 在一个断点中我只需要调试特定的场景/条件下的代码
  2. 发生异常时能够快速定位并暂停执行
  3. 在DEBUG时候,阅读到源码需要知道某个变量的值并且打印出来

1. 条件断点

在 IntelliJ IDEA 中,条件断点允许你在特定条件下暂停程序的执行,而不是每次执行到断点位置都暂停。这对于调试复杂的逻辑或循环非常有用

  • 右键点击已经设置好的断点(红色圆圈),这会弹出一个菜单。
  • 在弹出的对话框中,你会看到一个文本框标记为“Condition”。在这里输入你希望作为条件的布尔表达式。例如,如果你想仅当变量x大于10时暂停,你可以输入x > 10。
  • 确保勾选了“Enabled”和“Suspend”选项,然后点击 “OK”。
    这样只有当 x 的值大于10的时候才会进入到该断点
    在这里插入图片描述

2. 异常断点

异常断点是一种非常有用的调试工具,它允许你在特定类型的异常被抛出时自动暂停程序的执行。这对于快速定位和修复异常问题特别有帮助。

  • 右键断点选择“More”
  • 点击左上角加号并选择 Java Exception Breakpoint
  • 输入或者选择你感兴趣的异常类名。例如,如果你想在任何 NullPointerException 被抛出时暂停程序,就在这里输入 java.lang.NullPointerException。你也可以选择监听所有异常(包括子类),通过选择合适的选项实现。
  • 设置是否在捕获的异常上也暂停(不仅仅是未捕获的异常)。在某些情况下,你可能只对未处理的异常感兴趣,而在其他情况下,你可能希望在每次异常发生时都暂停,无论它是否已经被捕获。
  • 还可以指定条件、日志消息等高级选项,类似于普通断点的设置。还要选择禁用直到命中某个断点后再启用

在这里插入图片描述

3. 日志断点

日志断点是一种非常有用的调试技巧,它允许你在代码运行到特定位置时记录信息(例如变量的值)到控制台或日志文件中,而无需暂停程序的执行。这种方法在你想要监控某些变量或表达式的值变化而又不想中断程序正常流程的情况下特别有用

  • 右键断点选择“More”
  • 再断点中找到求值并记录
    这样程序就在断点处执行你的语句并打印结果
    在这里插入图片描述

4. 各种筛选器

  • 实例筛选器(Instance Filters):
    用于指定断点仅在特定实例上触发。
    例如,如果你有一个类的多个实例,你可以选择只在某个特定实例上调停。
  • 类筛选器(Class Filters):
    用于指定断点仅在特定类或其子类中触发。
    这对于处理继承关系复杂的类非常有用。
  • 合格次数(Hit Count):
    用于指定断点仅在满足特定调用次数时触发。
    例如,你可以设置断点在第10次调用时暂停。
  • 调用方筛选器(Caller Filters):
    用于指定断点仅在特定方法被调用时触发。
    这有助于在特定上下文中调试代码。

http://www.niftyadmin.cn/n/5864900.html

相关文章

Ubuntu及其衍生系统安装Python

目录 更新包列表 安装Python 3 安装特定版本的Python 验证安装 安装pip 更新包列表 在安装新的软件包之前,建议先更新系统的包列表,以确保安装的是最新版本的软件包: sudo apt update 安装Python 3 Ubuntu等系统通常默认安装了Python…

目标检测数据集-风机叶片缺损检测数据集(适用YOLO全系列)

YOLO格式的风机叶片缺损检测数据集,适用于YOLOv3-v11所有版本,可以用于本科毕设、发paper、做课设等等,有需要的在这里获取: 风机叶片损坏检测数据集 数据集专栏地址:https://blog.csdn.net/qq_41304809/category_1290…

Oracle:执行DELETE语句长时间无响应的排查步骤及解决方案

目录 [TOC](目录)**一、检查锁状态与阻塞会话****二、检查未提交事务****三、分析执行计划与SQL性能****四、检查触发器与约束****五、资源竞争与系统瓶颈****六、其他高级排查手段****七、紧急处理流程****总结** 以下是针对Oracle执行DELETE语句长时间无响应的排查步骤及解决…

2025软件测试面试题大全(78题含答案解析)

1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容…

vLLM学习1

调用方式 一、vLLM 提供的两种调用方式 1. Offline Batched Inference(离线批处理) 调用特点:一次性传入一批(batch)的请求,等待所有请求都处理完毕后,一次性返回推理结果。对用户而言&#x…

std::thread的同步机制

在 C 中,std::thread 用于创建和管理线程。为了确保多个线程能正确、安全地访问共享资源,避免数据竞争和不一致问题,需要使用同步机制。 互斥锁(std::mutex) 原理:互斥锁是一种最基本的同步原语&#xff…

Linux 命令大全完整版(12)

Linux 命令大全 5. 文件管理命令 ln(link) 功能说明&#xff1a;连接文件或目录。语  法&#xff1a;ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S <字尾备份字符串>][-V…

UE_C++ —— Gameplay Modules

目录 一&#xff0c;Module Creation INI File Setup 二&#xff0c;Multiple Gameplay Modules 三&#xff0c;Limitations 编译成 DLL 的游戏相关类的集合&#xff1b;正如引擎本身由一组模块构成一样&#xff0c;每个游戏也是由一个或多个游戏模块构成的&#xff1b;这些…