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断点的个人使用方式,希望能给排查问题的你一些帮助!

相关推荐
洗发水很好用4 小时前
新版IDEA提示@Autowired不建议字段注入
java·ide·intellij-idea
蔚一18 小时前
Java设计模式—面向对象设计原则(四) ----->接口隔离原则(ISP) (完整详解,附有代码+案例)
java·后端·设计模式·intellij-idea·接口隔离原则
软件技术NINI19 小时前
intellij idea创建java项目
intellij-idea
李少兄21 小时前
解决项目启动时报“找不到符号”问题
java·ide·intellij-idea
计算机学姐1 天前
基于SpringBoot+Vue的个性化旅游推荐系统
java·vue.js·spring boot·后端·intellij-idea·mybatis·旅游
cooldream20091 天前
使用 IntelliJ IDEA 导入已有的 Spring Maven 项目并运行
spring·maven·intellij-idea
doc_wei1 天前
Java汽车销售管理
开发语言·spring boot·vue·汽车·毕业设计·intellij-idea·课程设计
lwprain1 天前
idea中java及java web项目的常见问题
java·前端·intellij-idea
陈逸轩*^_^*1 天前
xml重点笔记(尚学堂 3h)
xml·java·笔记·java-ee·intellij-idea
weixin_586062021 天前
IntelliJ IDEA 创建 Java 项目指南
intellij-idea