在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面)下

简介: 在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面)下

七、多线程调试

一般情况下我们调试的时候是在一个线程中的,一步一步往下走。但有时候你会发现在Debug的时候,想发起另外一个请求都无法进行了?

那是因为IDEA在Debug时默认阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程走完时才会走其它线程。可以在View Breakpoints里选择Thread,如图7.1,然后点击Make Default设置为默认选项。(搜索公众号Java知音,回复“2021”,送你一份Java面试题宝典)

[图7.1]

d702fd6343eff38de2b3d5e279f0066.png

切换线程,在图7.2中Frames的下拉列表里,可以切换当前的线程,如下我这里有两个Debug的线程,切换另外一个则进入另一个Debug的线程。

[图7.2]

b145378e6c00a2ea033c6711cd84c01.png

八、回退断点

在调试的时候,想要重新走一下流程而不用再次发起一个请求?

1、首先认识下这个方法调用栈,如图8.1,首先请求进入DemoController的insertDemo方法,然后调用insert方法,其它的invoke我们且先不管,最上面的方法是当前断点所在的方法。

[图8.1]

61b1ff2519f2b7085a74174b48e010f.png

2、断点回退

所谓的断点回退,其实就是回退到上一个方法调用的开始处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个方法。

回退的方式有两种,一种是Drop Frame按钮(图8.2),按调用的方法逐步回退,包括三方类库的其它方法(取消Show All Frames按钮会显示三方类库的方法,如图8.3)。

第二种方式,在调用栈方法上选择要回退的方法,右键选择Drop Frame(图8.4),回退到该方法的上一个方法调用处,此时再按F9(Resume Program),可以看到程序进入到该方法的断点处了。

但有一点需要注意,断点回退只能重新走一下流程,之前的某些参数/数据的状态已经改变了的是无法回退到之前的状态的,如对象、集合、更新了数据库数据等等。

图[8.2]

791b6a7e9cd62544339c19fe17032b3.png

图[8.3]

26e2d2ea684060fc7e06a234381f502.png

图[8.4]

c5a08a0449a057c35e01c4f967a5d15.png

九、中断Debug

想要在Debug的时候,中断请求,不要再走剩余的流程了?

有些时候,我们看到传入的参数有误后,不想走后面的流程了,怎么中断这次请求呢(后面的流程要删除数据库数据呢....),难道要关闭服务重新启动程序?嗯,我以前也是这么干的。

确切的说,我也没发现可以直接中断请求的方式(除了关闭服务),但可以通过Force Return,即强制返回来避免后续的流程,如图9.1。

点击Force Return,弹出Return Value的窗口,我这个方法的返回类型为Map,所以,我这里直接返回 results,来强制返回,从而不再进行后续的流程。或者你可以new HashMap<>()。

[图9.1]

02537119d63a47445a5c742b00dd47a.png

[图9.2]

6cd7055bbac3eb10d142fcf07f568e9.png

作者:bojiangzhou

链接:https://www.cnblogs.com/chiangchou/p/idea-debug.html

目录
相关文章
|
4月前
|
Java 开发工具
【开发工具】IDEA-DeBug 调试模式使用
【1月更文挑战第20天】【开发工具】IDEA-DeBug 调试模式使用
|
13天前
|
Java 测试技术
使用IDEA进行服务器远程debug调试
使用IDEA进行服务器远程debug调试
21 0
|
26天前
|
NoSQL 关系型数据库 MySQL
开发者福音:用IDEA和Iedis2加速Redis开发与调试
开发者福音:用IDEA和Iedis2加速Redis开发与调试
33 0
开发者福音:用IDEA和Iedis2加速Redis开发与调试
|
1月前
|
Kubernetes Ubuntu Linux
通过 IntelliJ IDEA 对 containerd 进行源码级调试
本文介绍如何在 Ubuntu 22.04 系统上,通过 IntelliJ IDEA 对 containerd 进行源码级调试。我们将从 containerd 的安装、源码编译、验证调试信息的存在,到最终的调试过程中,每一步骤都进行详细讲解。
通过 IntelliJ IDEA 对 containerd 进行源码级调试
|
2月前
|
Java
IDEA 调试技巧
IDEA 调试技巧
21 1
|
2月前
|
关系型数据库 MySQL Java
IDEA+Mysql调试常见异常解决办法_kaic
IDEA+Mysql调试常见异常解决办法_kaic
|
3月前
|
开发工具
IDEA调试接口
IDEA调试接口操作方法
|
5月前
|
前端开发 JavaScript
idea 对JavaScript进行debug调试
idea 对JavaScript进行debug调试
|
5月前
|
监控 IDE Java
工作四年,我学会了用 Idea本地调试线上服务器代码
工作四年,我学会了用 Idea本地调试线上服务器代码
55 0
工作四年,我学会了用 Idea本地调试线上服务器代码
|
6月前
|
存储 负载均衡 NoSQL
idea 调试小心得
idea 调试小心得
50 0