IDEA调试总结

news/2024/7/16 9:12:56 标签: intellij-idea, java, ide

前言


由于 IDEA 每个人使用的版本不同以及快捷键的设置不同,所以忽略了快捷键的使用。如果不知道快捷键请在 IDEA 工具栏里面点开 Run 菜单即可知悉

图标介绍

下面咱们进入看图说话环节,下列图标小伙伴知道是啥功能么?日常开发进行 Debug 使用到哪一些呢?可能也就那一半左右吧!

1 Show Execution Point: ALT+F10

显示当前执行点,可以清晰地从图标中看出意思,红色的箭头上面执行完了,箭头下面的是将要执行的内容。那么这个有啥功能呢?从下面的动图可以看到当停留在断点的时候切换到 System 类里面,通过点击此图标即可回到当前断点停留的地方(如果记住快捷键了连鼠标都不用点了)。你是不是还在通过点击 Debugger 下的 Frames 里面的断点调用链来回到当前断点停留的地方呢?赶快使用 Show Execution Point 功能吧!

2 Step Over:F8

单步执行,如果有方法则不进入方法(除非方法里面有断点)

3 Step Into   F7

单步执行,如果有方法则进入方法(请检查你的 IDEA Debugger 里面的设置,一些包里面的方法使用 Step Into 也进不去,可以把下面的 Do not step into the classes 勾取消即可)


4 Force Step Into    ALT+SHIFT+F7

基本与 Step Into 功能相同,不同点就是可以强制进入那些 JDK 源码里面。不需要如上面的 Do not step into the classes 设置。

 5 Step Out: SHIFT+F7

跳出当前所在的方法,返回调用此方法的地方。

6 Run to Cursor: ALT+F9

执行到光标所在位置,可以跳过中间需要执行的代码。

7 Drop Frame:

丢弃当前方法,回退上一个方法。如果是 main 方法则不会激活此图标。学”废“了这个妈妈再也不用担心我一不小心错过了断点,还需要重新来啦。

8 Trace Current Stream Chain:

对当前 Stream 进行链路追踪,喜欢用 JDK 8 新特性 Stream 来编程的小伙伴可以使用这个功能,谁用谁知道!

9 Evaluate Expression: (ALT+F8)

表达式计算,Debug 功能里面最牛逼的功能,不接受反驳!一切皆可使用这个功能。

断点的分类

在Java开发中,使用IntelliJ IDEA进行调试时,可以使用多种类型的断点来帮助开发者进行调试。以下是其中一些常用的断点类型:

1. 行断点(Line Breakpoint)

在代码的某一行设置断点,当程序执行到该行时会触发断点暂停程序。

2. 条件断点(Conditional Breakpoint)

在特定条件下触发断点的暂停,开发者可以指定一个条件,当满足条件时程序会在该断点暂停。

比如上面的例子,我想定位到数据库中哪条数据有问题是负数导致了我的总数也负了

如下图,我们可以看到,断点卡在了负数分数的对象上

3. 异常断点(Exception Breakpoint)

当特定类型的异常被抛出时暂停程序,可以帮助开发者快速定位异常抛出的位置。

4. 监视断点(Watchpoint)

在属性上打上断点,用于监控属性的变化 

5. 方法断点(Method Breakpoint)

当程序执行到特定方法时暂停程序,可以用来追踪方法的调用情况。

以上是在IntelliJ IDEA中常见的几种断点类型,开发者可以根据实际调试需求选择合适的断点类型来辅助调试。

6 源断点

这个直接上需求解释,日常调试中,我想知道一个循环中的每次变量值,请问怎么办?

可以在断点的more里进行设置

7 多线程断点

在多线程的场景下,我们如果想单独调试某个线程的断点,而被其他线程影响.

我只是想调试下面的线程,而不想上面的线程执行影响我,那么我只需要打上多多线程断点即可,操作如下

 8 stream断点

用于java8+等版本的stream使用时的断点,可以充分展示每个链式操作的数据流转过程

9断点回退

用于方法级别的调试时,回退到方法的进入之前,用于手速太快,不想重启,想重新执行一次断点的场景

ps:(1.一定要是方法调用,2.引用对象不建议使用,回退后对象的内容会发生改变)

如下,我们可以看到回退后,基本数据类型sum,从2回退到了0,可以重新进入方法

高级技巧整理

临时执行表达式/修改变量的运行值

可以查看当前方法里面的变量信息,右键变量可以操作变量里面的值或者复制出来以及新建 Watch 等

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

然后回车,马上就能看到结果 

当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

参考链接

【精选】玩转 IDEA Debug 功能_idea lambda 断点-CSDN博客

关于idea的八种断点调试_idea断点调试_张名佳的博客-CSDN博客


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

相关文章

BootCamp 6.0.6136/6.0 6133 Windows10驱动

ootCamp 6.0.6136是6.0.6133升级驱动,主要解决了win10声卡BUG问题。 BootCamp 6.0.6136/6.0 6133 Windows10驱动 - 苹果系统之家 (macoshome.com)

SOME/IP 协议介绍(三)参数和数据结构的序列化

参数和数据结构的序列化 序列化是基于接口规范定义的参数列表。为了允许服务接口的迁移,反序列化,代码应忽略附加在先前已知的参数列表末尾的参数;也就是说,忽略在用于生成或参数化反序列化代码的接口规范中未定义的参数。 接口…

2023.11.10联赛 T3题解

题目大意 题目思路 感性理解一下,将一个数的平方变成多个数平方的和,为了使代价最小,这些数的大小应该尽可能的平均。 我们可以将 ∣ b i − a i ∣ |b_i-a_i| ∣bi​−ai​∣放入大根堆,同时将这个数划分的次数以及多划分一段减…

element-ui的form校验失败

数值与字符串混淆 数值 <el-input type"number" v-model.number"form.averageFruitWeight" placeholder"请输入平均单果重"/>字符串 fruitDevelopmentStage: [{pattern: ^[-\\]?([0-9]\\.?)?[0-9]$, message: 输入必须为数字, trigge…

问题描述:64位计算机的寻址能力是多少TB

问题描述&#xff1a;64位计算机的寻址能力是多少TB 我在看到一个32位电脑的寻址能力计算时&#xff0c;看到是这么计算的。 虚拟内存的大小受到计算机地址位数的限制&#xff0c; 那么32位电脑的寻址能力计算应该是这样 为什么网上百度到的是16TB呢&#xff0c;如下图所示 中…

2024年的后端和Web开发趋势

目录 1 2 3 4 5 1 不断变化的数字创新格局可能让人感觉像是一场无情的竞赛。作为开发人员&#xff0c;你的痛苦是真实的——交付尖端产品、保持竞争力、跟上不断变化的用户期望&#xff0c;综合起来你的压力可能是压倒性的。 但是&#xff0c;如果我们告诉你有一个指南针…

引用(类名后加符号)和指针的区别

它们的区别&#xff1a; ①从现象上看&#xff0c; 指针在运行时可以改变其所指向的值&#xff0c; 而引用一旦和某个对象绑定后就不再改变。 这句话可以理解为&#xff1a; 指针可以被重新赋值以指向另一个不同的对象。 但是引用则总是指向在初始化时被指定的对象&#x…

关于锁策略

常见的锁策略悲观锁乐观锁读写锁轻量级锁、重量级锁自旋锁公平锁和非公平锁可重入锁 vs 不可重入锁synchronized是什么锁呢&#xff1f; 常见的锁策略 锁策略不仅仅限制于Java;其它锁相关的也是会涉及这些策略;这些特性主要是在实现锁的时候运用的。虽然我们的工作可能就是把轮…