IDEA高效调试,你真的会了吗

大家好,这里是 一口八宝周 👏

欢迎来到我的博客 ❤️一起交流学习

文章中有需要改进的地方请大佬们多多指点 谢谢 🙏

由于平时工作中经常需要debug调试代码,每次调试都会阻塞住进程,影响别人排查问题。

"你一个人debug一分钟,公司那么多的人,那就是多少分钟..."

为了高效排查问题,且不影响他人,高效利用debug调试就非常重要了。ok

进入正题!!

基础断点

首先就是最基础的断点,直接断点,该操作会暂停所有进入该方法的线程。【不建议使用】

条件断点

条件断点就是比上一个好一点的调试方式,在断点的时候选择【Thread】而不是【All】

加入条件后,只有符合条件的线程会进入该方法,如果operate为"sub"则不会进入debug调试。这样一来也可以有效的避免了阻塞他人操作,即使操作相同,只要参数不同也不会进入debug。

我觉得这个最棒的一点就是调试 for 循环,假设我们这个循环有 100 个对象,但是我只想要其中1个对象的循环,总不能一直点到那个对象为止吧,这时候条件断点就是最优选,直接定位到你想要的对象。

不暂停断点

该方法可以不暂停线程的执行

查看变量值

取消勾选Suspend,并打印想要看的参数变量,可以输出打印想要查看的变量。

可以看到输出了我们想要查看的变量值。

改变变量值

模拟修改变量值,测试多场景,且不会影响其他线程的执行。

查看调用方

可以直接观察到调用堆栈,类似 Arthas 的 trace,查看谁调用了我

debug神器-Evaluate Expression

evaluate expression是idea一个在debug模式下可以动态执行代码的工具,可以动态修改代码运行时的变量值,利用这个工具我们可以在debug的时候执行代码中的方法,查看变量的值。

下图为代码debug到第9行,使用evaluate expression输出result的值。

返回上层

有时候debug的时候点的太快了,就容易跳过断点,就只有重头再来。前天和同事聊天的时候,学习到了使用Reset Frame的方式进行调试,直接点击那个箭头,或者右键选择【Reset Frame】都可以回到上一个的调用方法。

查看赋值

假设有个变量(这里为desc),我想知道这个流程中到底是谁给desc赋过值,结果一反引,几百处引用,那么我该如何知道谁在方法中给desc赋了值呢,只需要在对象的desc字段上打上断点即可

异常断点

还有一个异常断点,全局异常断点,会自动断点到我们出现异常的地方,输入想要断点的异常即可,这里不做演示了

以上就是关于idea断点的个人使用方式,希望能给排查问题的你一些帮助!

相关推荐
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧13 小时前
《苍穹外卖》- day01 开发环境搭建
spring boot·后端·spring·maven·intellij-idea·mybatis
秋920 小时前
idea中如何使用Trae AI插件,并举例说明
java·人工智能·intellij-idea
Hyacinth&1 天前
IntelliJ IDEA|学习笔记
笔记·学习·intellij-idea
可以吧可以吧1 天前
idea全家桶【常见报错处理】当出现 “We could not validate your license ... “ 提示时
java·ide·intellij-idea
装不满的克莱因瓶1 天前
IDEA rebuild project 到底有什么作用?
java·ide·intellij-idea
Java程序员威哥1 天前
Arthas+IDEA实战:Java线上问题排查完整流程(Spring Boot项目落地)
java·开发语言·spring boot·python·c#·intellij-idea
摇滚侠1 天前
在 IDEA 中,GIT 合并分支时选择远程的 dev 分支和本地的 dev 分支,有区别吗
java·git·intellij-idea
计算机学姐1 天前
基于SpringBoot的演唱会抢票系统
java·spring boot·后端·spring·tomcat·intellij-idea·推荐算法
Chan161 天前
《Java并发编程的艺术》| ConcurrentHashMap 在 JDK 1.7 与 1.8 的底层实现
java·spring boot·java-ee·intellij-idea·juc
烤麻辣烫2 天前
23种设计模式(新手)-9单例模式
java·开发语言·学习·设计模式·intellij-idea