前言
由于 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博客