您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

玩转 IDEA 花式打断点,从此告别 996

时间:2022-02-04 17:16:04  来源:  作者:刘水镜
玩转 IDEA 花式打断点,从此告别 996

 

写代码离不开调试,调试离不开断点。

IDEA 对于断点的支持非常丰富。掌握这些技巧以后,可以大大的提升开发效率。是帮助程序员保住头发,远离 996 的秘密武器。

 

断点类型

IDEA 支持以下四种断点类型:

  • 行断点(Line breakpoints):最常用的一种,可以设置在任意可执行的代码行上面。
  • 方法断点(Method breakpoints):设置在方法签名上,当进入或退出方法时,断点可被唤醒。
  • 字段断点(Field watchpoints):设置在字段(成员变量)上,当该字段被读取或者赋值时断点被唤醒。
  • 异常断点(Exception breakpoints):当抛出指定异常时断点被唤醒。

 

行断点

行断点,在日常开发中最常用的方式。添加一个行断点很简单,在需要添加断点的 gutter 上鼠标左键单击,或者光标定位到需要设置断点的代码行,按 Ctrl + F8 即可。

玩转 IDEA 花式打断点,从此告别 996

行断点

断点添加成功后,gutter 上会显示一个红色的圆点。接下来,使用 Debug 方式运行程序,就可以对代码进行调试了。

 

方法断点

方法断点你可能之前没有用过,但如果你有阅读源码的习惯,那么你需要好好利用一下这个家伙了。

玩转 IDEA 花式打断点,从此告别 996

方法断点

添加方法断点和添加行断点的步骤一样,两者只是外观上有些不同,方法断点用红色的菱形表示。

那么方法断点有什么用呢?举个例子:

玩转 IDEA 花式打断点,从此告别 996

类图

有如上类关系,代码实现如下:

public class ServiceImplA implements Service{
    @Override
    public String method() {
        return "hello A";
    }
}


public class ServiceImplB implements Service{
    @Override
    public String method() {
        return "hello B";
    }
}

 

有如下调用:

public String hello() {
    // 假设通过看代码很难确定是哪个实现类的实例
    Service service = createService();
    return service.method();
}

这个时候,我们不能一眼看出 service 是 ServiceImplA 的实例,还是 ServiceImplB 的实例(这个例子代码比较简单,像 Spring 这类开源框架要复杂很多,看过源码的话都有体会)。

接下来就是方法断点表演的时刻了,在接口 Service 的 method() 上打一个断点:

玩转 IDEA 花式打断点,从此告别 996

方法断点

运行程序,查看效果:

玩转 IDEA 花式打断点,从此告别 996

方法断点效果

可以看到,hello() 方法中的 service.method() 真正调用的是 ServiceImplA 的 metho() 方法。

另外,方法断点还支持以下配置:

玩转 IDEA 花式打断点,从此告别 996

方法断点配置项

其中,Method entry 和 Method exit 二者至少要选择一个(如果进入方法和退出方法都不选,那方法断点也就没啥用了)。

 

字段断点

字段断点也是一个看源码的神器。当一个成员变量被多方引用时,它可以精准的找到谁读取、修改了它的值。

玩转 IDEA 花式打断点,从此告别 996

字段断点

字段断点用一个红色的眼睛表示,可谓是非常形象了。就像给成员变量专门安排了一个盯梢的人,有什么风吹草动第一时间通知你。

 

运行程序,看下效果:

玩转 IDEA 花式打断点,从此告别 996

字段断点效果

可以看到,精准的定位到 hello 被赋值的位置。

 

字段断点还支持以下配置:

玩转 IDEA 花式打断点,从此告别 996

字段断点配置项

同样,Field access 和 Field modification 最少选一个。

 

异常断点

异常断点在我们修复 bug 的时候很有用。可以精准的定位到发生(指定类型)异常的代码行。

玩转 IDEA 花式打断点,从此告别 996

异常断点

异常断点用一个红色的闪电表示(断点响应以后才会显示)。

使用快捷键 Ctrl + Shift + F8 打开断点管理对话框,按如下步骤进行添加:

玩转 IDEA 花式打断点,从此告别 996

添加异常断点

设置断点响应的异常类型:

玩转 IDEA 花式打断点,从此告别 996

设置异常类型

运行程序,查看效果:

玩转 IDEA 花式打断点,从此告别 996

异常断点效果

可以看到,当发生(指定类型)异常后,程序停在了发生异常的代码行,并在前面放一个红色的闪电,提醒你就是这行代码要搞事情。

 

断点还支持以下配置:

玩转 IDEA 花式打断点,从此告别 996

异常断点配置项

同样,Caught exception 和 Uncaught exception 最少选一个。

 

更多玩法

使用快捷键 Ctrl + Shift + F8 打开断点管理对话框,可以解锁更多断点的玩法:

玩转 IDEA 花式打断点,从此告别 996

断点管理

比如可以设置断点在满足指定条件时才响应:

玩转 IDEA 花式打断点,从此告别 996

条件断点效果

更多玩法留给你去探索。

 

断点图标

下面是 IDEA 中各种类型断点在不同状态下的图标示意:

玩转 IDEA 花式打断点,从此告别 996

断点图标示意



Tags: IDEA   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
写代码离不开调试,调试离不开断点。IDEA 对于断点的支持非常丰富。掌握这些技巧以后,可以大大的提升开发效率。是帮助程序员保住头发,远离 996 的秘密武器。 断点类型IDEA 支...【详细内容】
2022-02-04  Tags: IDEA  点击:(10)  评论:(0)  加入收藏
IDEA版本:2020.1【原因】使用intellij idea很长一段时间,软件相关的配置也都按照自己习惯的设置好,如果需要重装软件,还得需要重新设置【操作】:1.首先将本地的设置上传到云端[...【详细内容】
2021-06-15  Tags: IDEA  点击:(141)  评论:(0)  加入收藏
IDEA在手 天下我有我们打算将Pondus的所有生产服务器升级到这一新版本。 从那时起,我们将大部分代码库迁移到lambda表达式、数据流和新的日期API上。 我们也会使用Nashorn来...【详细内容】
2021-06-10  Tags: IDEA  点击:(185)  评论:(0)  加入收藏
一、概述毋庸置疑 IntelliJ IDEA 已经成为 Java 开发最好用的开发工具,这篇文章主要记录自己使用 idea 开发过程中的一些常用配置,主要是根据自己的开发习惯进行的配置,记录这...【详细内容】
2021-05-24  Tags: IDEA  点击:(261)  评论:(0)  加入收藏
前言程序员对待IDE都是虔诚的,经常因为谁是最好的IDE而在江湖上掀起波澜,曾经我也是。后来我遇到了IDEA,从此是它,余生都是它。IDEA 毫无疑问是目前最强大的Java开发工具了,但是...【详细内容】
2021-04-06  Tags: IDEA  点击:(273)  评论:(0)  加入收藏
如果您是开源项目的负责人或核心贡献者,就可以申请 JetBrains 所有产品的License,用于您的项目开发。免费许可计划 开源项目: 符合 Open Source 定义。 正在积极开发中,即在过...【详细内容】
2020-11-06  Tags: IDEA  点击:(205)  评论:(0)  加入收藏
IDEA是什么? IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重...【详细内容】
2020-07-23  Tags: IDEA  点击:(52)  评论:(0)  加入收藏
有一些没有唯一正确答案的“永恒”的问题,例如,更好的是:Windows还是Linux,Java还是C#;谁更强大:Chuck Norris还是Van Damme。...【详细内容】
2019-12-09  Tags: IDEA  点击:(70)  评论:(0)  加入收藏
刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改tab的显示的数量和行数,打开项目方式,等等一大...【详细内容】
2019-11-01  Tags: IDEA  点击:(89)  评论:(0)  加入收藏
▌简易百科推荐
在我没接触这一行时这个问题困扰了我很长时间,让我十分的不理解到底什么是爬虫,它难道是一种实体工具?,直到我学习python 深入分析了解以后才揭开了它神秘的面纱。 爬虫是什么呢...【详细内容】
2022-02-10  new一个对象    Tags:爬虫   点击:(2)  评论:(0)  加入收藏
图像阈值分割图像阈值分割,一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取...【详细内容】
2022-02-07  IT小奋斗    Tags:阈值   点击:(9)  评论:(0)  加入收藏
写代码离不开调试,调试离不开断点。IDEA 对于断点的支持非常丰富。掌握这些技巧以后,可以大大的提升开发效率。是帮助程序员保住头发,远离 996 的秘密武器。 断点类型IDEA 支...【详细内容】
2022-02-04  刘水镜    Tags: IDEA   点击:(10)  评论:(0)  加入收藏
结论:当所需的精度由小数点右侧的位数决定时,decimal 类型是合适的。 此类数字通常用于财务应用程序、货币金额(例如 $1.00)、利率(例如 2.625%)等。 精确到只有一个小数用 decim...【详细内容】
2022-02-03  到底想咋样啊    Tags:Decimal   点击:(11)  评论:(0)  加入收藏
一、背景1.1、时间紧任务重在之前开发一套公司内部系统时一方面时间紧前期工作准备不充分,另一方面也在业务对接及编码工作的规范上做得不是很好导致了这套系统仅停留在能用...【详细内容】
2022-02-01  晓掌柜丶韶华    Tags:硬编码   点击:(15)  评论:(0)  加入收藏
最容易引发内存溢出的,就是系统创建出来的对象!1 对象在Eden区分配系统运行时,一直不停创建对象,然后大量对象会填满Eden。Eden满,就会触发一次YGC,然后存活对象进入S区: 2 高并发...【详细内容】
2022-01-31  JavaEdge    Tags:对象   点击:(15)  评论:(0)  加入收藏
本文是“2021 InfoQ 年度技术盘点与展望”系列文章之一,由直播内容整理而成,重点聚焦编程语言领域在 2022 年的核心趋势展望,希望能帮助你准确把握 2022 年编程语言领域的核心...【详细内容】
2022-01-29  InfoQ    Tags:编程语言   点击:(20)  评论:(0)  加入收藏
大多数IT运营专业人员面临的另一个挑战是需要以更快、更高效、更高的工作量执行任务和工作流程。值得庆幸的是,像无代码自动化这样的工具可以提供一个缺失的环节来优化效率,...【详细内容】
2022-01-29  智能协同表格    Tags:无代码   点击:(18)  评论:(0)  加入收藏
while(1) 和 for(;;)它们不都是无限循环吗,作用应该一样啊,它们到底有什么区别?要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你...【详细内容】
2022-01-25  IT三宝    Tags:汇编   点击:(16)  评论:(0)  加入收藏
一、摘要在实际的业务开发过程中,我们常常会碰到需要与第三方互联网公司进行技术对接,例如支付宝支付对接、微信支付对接、高德地图查询对接等等服务,如果你是一个创业型互联网...【详细内容】
2022-01-24  DNF搬砖摸金达人    Tags:API接口   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条