熟练使用IDEA的断点调试(Breakpoint),大大提升你调试代码的效率(行断点、属性断点、异常断点、条件断点、远程debug...)【享学Java】(上)

简介: 熟练使用IDEA的断点调试(Breakpoint),大大提升你调试代码的效率(行断点、属性断点、异常断点、条件断点、远程debug...)【享学Java】(上)

前言


断点调试对IT从业者不是一个陌生的概念,我认为它是每个程序猿(媛)从业者都避不开的且非常重要的技能之一。

那它到底有多重要呢?为了体现本文的重要性,我引用几个大佬的话来表述断点调试的重要性:


  1. 神秘大佬A:调试技巧比编码技巧更为重要,因为花费在调试上的时间往往比编码还多,学到的东西比编码中学到的更丰富
  2. 神秘大佬B:调试技能重要性甚⾄超过学习⼀门语⾔
  3. 神秘大佬C:不会调试的程序员,肯定编制不出任何好的软件


大佬都这么认为了,so我们需要有一个共识:调试能力是一个程序员最最最基础的技能。本文主要发力讲述调试的相关技能、技巧,希望对你的职业生涯能有所帮助。


说明:本文讲解是基于IntelliJ IDEA而非eclipse,因此我们从它的断点对话框开始:

image.png


弹出此对话框默认快捷键是:Ctrl + Shift +F8,在这里你可以管理你所有的断点(增删改)。


鼠标方式可以这样开启:Action-view breakpoints / 菜单run-view breakpoints


断点的基本概念


断点你可能天天都在使用,但是若真要你对它下定义,估计一时间还有点懵逼呢有木有?


断点:是一种附加在源代码上面的特殊标记,在调试模式(debug模式)下可以触发特定的动作,比如打印线程调用栈信息、计算值、打印指定表达式的值等等。Tips:断点一但设置就会一直保存在工程中直到手动删除~


断点若想生效,必须是调试模式(debug模式)下才行~


断点参数(断点属性)

断点并不是仅仅是孤立的存在的,它也可以通过参数进行定制化,这些叫断点参数。

不同类型的断点支持的断点参数也不尽相同,在下面具体介绍时会详细说明~


开胃小菜:比如最常用的条件断点,它就是断点参数的一个典型应用

断点的种类


据我粗略调查,80%的小伙伴打断点只会采用代码行左边鼠标单击这种最基础的方式打断点然后调试。其实在现实场景中,有非常非常多的情况下,这种方式将很难快速定位到问题所在,因此了解断点分类、调试技巧就显得有点必须了~


殊不知,IDEA给我们提供了丰富的断点类型,让我们能够在不同的调试场景下,使用不同的断点类型来大大提高我们的调试效率,毕竟效率就是时间,而时间就是生命。


image.png



从idea断点对话框里也能够看出断点是分类的。然后下面我对断点的分类讲解不是完全按此分类,我的分类会更加详细如下:


  1. Line breakpoint(行断点):在指定代码行设置断点,属于行级别的断点
  2. Temporary line breakpoint(临时行断点):与行断点类似,不同之处在于该类型的断点在被激活之后会被立即删除
  3. Field watchpoint(属性断点):读取或者修改属性时会激活属性断点
  4. Method breakpoint(方法断点):它是标记在方法那一行的断点,有自己特有的属性参数
  5. Exception breakpoint(异常断点):当程序抛出指定异常时会激活异常断点。与行断点不同,异常断点不需要与源代码映射(不需要打在具体某一行代码上),因为异常断点应用程序级别的


Line breakpoint(行断点)


这是使用得最为广泛的一种断点。示例操作“视频“:

20190621020749586.gif


断点参数


作为第一个介绍的断点类型,这里有必要全面的解释一下上面行断点操作的断点参数:


  • Suspend:有没有让你诧异到,它竟然是个复选框并且还可以不被选中。若它不被选中的话断点的相关动作依然激活执行,只是线程不会被组塞了而已。它的两种阻塞策略如下:
  • - All:阻塞该程序内所有线程(默认)
  • - Thread:只阻塞当前断点所在线程(在多线程调试、远程调试中强烈建议使用这种方式)
  • Condition:这就是所谓的条件断点,只有书写的表达式返回true时候断点才会被激活

Log:

- 勾选"Breakpoint hit message":断点激活时输出提示日志

- 勾选"Stack trace":断点激活时输出程序调用栈信息

- 勾选"Evaluate and log":并在下面的输入框中输入"args",断点激活时会计算并输出变量 args 的值

- 他哥三是可以同时被勾选的(因为都是复选框~)


这里其实已经把绝大多数共用的断点参数都讲述了,这样下面就会稍微简单点了~~


Temporary line breakpoint(临时行断点)


创建方法不说了,同上。和上面的唯一区别是:把Remove once hit这个复选框给勾选上(此类型断点其实使用较少)。


Field watchpoint(属性断点)

创建的方式和上无差异。

20190621022319263.gif

断点参数

由于绝大多数参数第一个已经讲述了,so这里只剩一个它独有的参数:


  • Watch:选中"Filed Access" 读取的时候都会断住。选中"Filed madification"表示修改的时候都会断住

Method breakpoint(方法断点)

打断点方式同上,只是它是必须把断点打在方法那一行上。


20190621142953893.gif

它也有一个自己独有的参数:


参数

  • Watch:

- “Method entry”:进入方法时激活断点

- “Method exit”:出去方法时激活断点

- “Emulated”:目前发现没啥卵用(求小伙伴不要喷我~)


Exception breakpoint(异常断点)

异常断点属于非常特殊的一种断点类型,它不对应任何一行代码,因为它属于程序级别的断点。

它不能像上面在代码处直接创建,只能通过上面的断点对话框来创建。

20190621144211746.gif


此处注意:异常断点中很多选项就是不能使用的(灰色)如下图示:


image.png



目录
打赏
0
0
0
0
37
分享
相关文章
java实现队列数据结构代码详解
本文详细解析了Java中队列数据结构的实现,包括队列的基本概念、应用场景及代码实现。队列是一种遵循“先进先出”原则的线性结构,支持在队尾插入和队头删除操作。文章介绍了顺序队列与链式队列,并重点分析了循环队列的实现方式以解决溢出问题。通过具体代码示例(如`enqueue`入队和`dequeue`出队),展示了队列的操作逻辑,帮助读者深入理解其工作机制。
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
233 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
4天前
|
JetBrains IntelliJ IDEA 2025.1 发布 - 领先的 Java 和 Kotlin IDE
JetBrains IntelliJ IDEA 2025.1 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE
60 2
JVM实战—1.Java代码的运行原理
本文介绍了Java代码的运行机制、JVM类加载机制、JVM内存区域及其作用、垃圾回收机制,并汇总了一些常见问题。
JVM实战—1.Java代码的运行原理
|
1月前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
89 5
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
98 0
【优雅代码】09-idea断点、插件、模板合集
用好idea可以辅助程序员更快的开发,从效率和bug上都能取得更优秀的成绩
【优雅代码】09-idea断点、插件、模板合集
只用正版!教你5个方法,白嫖JetBrains家族的所有产品,包含:IntelliJ IDEA、PyCharm、WebStorm、CLion、Rider
程序员晚枫分享了5种官方认证的免费使用JetBrains家族产品的方法,包括内容创作者计划、开源项目支持、教育许可证、用户组支持和开发者认可计划。这些方法帮助个人开发者与小型团队合法获取强大开发工具,如IntelliJ IDEA、PyCharm等,降低开发成本,提升效率。同时提醒大家遵守使用规范,尊重知识产权。
223 13
|
9月前
|
day4:JDK、IntelliJ IDEA的安装和环境变量配置
【7月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
317 0
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
221 2