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

相关推荐
尘浮生2 小时前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
计算机毕设指导63 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
界面开发小八哥8 小时前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
薯条不要番茄酱8 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
小码ssim1 天前
IDEA使用tips(LTS✍)
java·ide·intellij-idea
小叶lr1 天前
idea 配置 leetcode插件 代码模版
java·leetcode·intellij-idea
qq_429856571 天前
idea启动服务报错Application run failed
java·ide·intellij-idea
小安同学iter1 天前
Java进阶五 -IO流
java·开发语言·intellij-idea
不能只会打代码1 天前
大学课程项目中的记忆深刻 Bug —— 一次意外的数组越界
java·github·intellij-idea·话题博客
聂 可 以1 天前
IDEA一键启动多个微服务
java·微服务·intellij-idea