如果你也会这样调试,那你真是泰酷辣

1.引言

Hi,大家好,我是有清。

工欲善其事,必先利其器,学会如何利用 IDEA 高效 debug ,将会大大提升我们的工(mo)作(yu)效(shi)率(jian)

基本的断点调试方式就不讲解,网上有很多优秀的文章,主要举一些我们日常工作中容易被忽视的调试技巧

2.正文

2.1 断点执行至光标处

我们当前断点停止在第 5 行,假设我们想断点调试第 12 行,一般来说,我们在 12 行断点,然后直接往下走即可

但其实我们可以这样

直接 Run to Cursor (强烈建议快捷键操作,更加丝滑 option + F9),就可以直接断点到我们的 12 行

2.2 快速执行表达式

我们通常在调试的时候,利用 Evaluate Expression...(option + F8),可以进行我们的表达式执行,

有一定开发经验的小伙伴肯定使用过这个功能,因为在工作中,这个调试技巧使用的频率还蛮高的,我们可以利用快捷键高效调试,例如下图

快捷键:alt + d 唤起执行窗口 -> option + F9 定位光标处 -> option + command + f8 快速执行表达式

2.3 调试的时光倒流

有的时候,我们的小伙伴可能心太急,一路迅速 deubg,却忘记沿途的风景了,这个时候我们就需要利用到 drop frame,具体操作如下图所示

2.4 仅调试循环中的一个条件

有的时候,我们只想调试 for 循环中的某个条件,假设我们这个循环有 100 次,其中只有第99次的循环是我们想要的,如果我们一直点点点,点到第99次,那真是有一点痛苦,我们可以这样

2.5 谁给变量赋的值?

在我们的项目中,假设有个变量 a,我想知道这个流程中到底是谁给 a 赋过值,结果一反引,几百处引用,那么我该如何知道谁在方法中给 a 赋了值,我们只需要在 pojo 对象的 a 字段上打上断点即可,动图展示一下

2.6 这个方法何去何从

在我们的项目中,有个接口 a,但是有无数的类实现了这个接口 a,我想调试到真正执行 a 方法的地方,我该怎么做?在无数实现类中 debug 吗?我们可以将断点打在这个接口 a 方法上(当然,这个将会使你的 debug 变慢)

2.7 不暂停的 debug

通常情况下,我们断点的时候,会卡住当前线程

假设我们在主预发或者公用环境进行debug,就老感觉背后有人在骂我,谁 *** 又在debug,环境 *** 的怎么又不通了,所以当我们想要愉快在公用环境debug的时候

查看变量值

不暂停直接观察相关变量值

强行改变变量值

是谁调用了我

可以直接观察到调用堆栈,类似 Arthas 的 trace

你进来了不

如果执行了断点所在位置,会在控制台打出一行日志

2.8 异常断点

全局异常断点,会自动断点到我们出现异常的地方,具体操作可见图

闲言碎语

贴一张最近杭州的天空的云

往期文章

日志全链路追踪之MDC

像写诗一样写代码:扁平化管理你的代码

这五种方式拓展Bean的生命周期,你必须记住

相关推荐
后端不背锅几秒前
Redis 缓存穿透、击穿、雪崩:一次讲清楚
后端
小涛不学习3 分钟前
Java List 集合深度解析(ArrayList / LinkedList 原理详解)
java·开发语言·windows
用户6996228806055 分钟前
PocketBase:3分钟搭建全功能后端的轻量级神器
后端
郝学胜-神的一滴5 分钟前
一序平衡,括号归真:单括号匹配算法的优雅美学
java·前端·数据结构·c++·python·算法
吃着火锅x唱着歌7 分钟前
PHP7内核剖析 学习笔记 第十章 扩展开发(3)
java·笔记·学习
猹叉叉(学习版)8 分钟前
【ASP.NET CORE】 11. SignalR
笔记·后端·c#·asp.net·.netcore
ok_hahaha8 分钟前
java从头开始-苍穹外卖-day11-数据统计与展示
java
MyY_DO8 分钟前
继承+代码复用使用方法说人话
java·开发语言
程序边界11 分钟前
从MySQL到国产数据库的真实迁移笔记:那些坑爹的坑和意外的爽点
后端
qq56801807611 分钟前
一个基于Spring Boot的简单网吧管理系统
java·spring boot·后端