IDEA调试总结

前言


由于 IDEA 每个人使用的版本不同以及快捷键的设置不同,所以忽略了快捷键的使用。如果不知道快捷键请在 IDEA 工具栏里面点开 Run 菜单即可知悉

图标介绍

下面咱们进入看图说话环节,下列图标小伙伴知道是啥功能么?日常开发进行 Debug 使用到哪一些呢?可能也就那一半左右吧!

1 Show Execution Point: ALT+F10

显示当前执行点,可以清晰地从图标中看出意思,红色的箭头上面执行完了,箭头下面的是将要执行的内容。那么这个有啥功能呢?从下面的动图可以看到当停留在断点的时候切换到 System 类里面,通过点击此图标即可回到当前断点停留的地方(如果记住快捷键了连鼠标都不用点了)。你是不是还在通过点击 Debugger 下的 Frames 里面的断点调用链来回到当前断点停留的地方呢?赶快使用 Show Execution Point 功能吧!

2 Step Over:F8

单步执行,如果有方法则不进入方法(除非方法里面有断点)

3 Step Into   F7

单步执行,如果有方法则进入方法(请检查你的 IDEA Debugger 里面的设置,一些包里面的方法使用 Step Into 也进不去,可以把下面的 Do not step into the classes 勾取消即可)


4 Force Step Into    ALT+SHIFT+F7

基本与 Step Into 功能相同,不同点就是可以强制进入那些 JDK 源码里面。不需要如上面的 Do not step into the classes 设置。

 5 Step Out: SHIFT+F7

跳出当前所在的方法,返回调用此方法的地方。

6 Run to Cursor: ALT+F9

执行到光标所在位置,可以跳过中间需要执行的代码。

7 Drop Frame:

丢弃当前方法,回退上一个方法。如果是 main 方法则不会激活此图标。学”废“了这个妈妈再也不用担心我一不小心错过了断点,还需要重新来啦。

8 Trace Current Stream Chain:

对当前 Stream 进行链路追踪,喜欢用 JDK 8 新特性 Stream 来编程的小伙伴可以使用这个功能,谁用谁知道!

9 Evaluate Expression: (ALT+F8)

表达式计算,Debug 功能里面最牛逼的功能,不接受反驳!一切皆可使用这个功能。

断点的分类

在Java开发中,使用IntelliJ IDEA进行调试时,可以使用多种类型的断点来帮助开发者进行调试。以下是其中一些常用的断点类型:

1. 行断点(Line Breakpoint)

在代码的某一行设置断点,当程序执行到该行时会触发断点暂停程序。

2. 条件断点(Conditional Breakpoint)

在特定条件下触发断点的暂停,开发者可以指定一个条件,当满足条件时程序会在该断点暂停。

比如上面的例子,我想定位到数据库中哪条数据有问题是负数导致了我的总数也负了

如下图,我们可以看到,断点卡在了负数分数的对象上

3. 异常断点(Exception Breakpoint)

当特定类型的异常被抛出时暂停程序,可以帮助开发者快速定位异常抛出的位置。

4. 监视断点(Watchpoint)

在属性上打上断点,用于监控属性的变化 

5. 方法断点(Method Breakpoint)

当程序执行到特定方法时暂停程序,可以用来追踪方法的调用情况。

以上是在IntelliJ IDEA中常见的几种断点类型,开发者可以根据实际调试需求选择合适的断点类型来辅助调试。

6 源断点

这个直接上需求解释,日常调试中,我想知道一个循环中的每次变量值,请问怎么办?

可以在断点的more里进行设置

7 多线程断点

在多线程的场景下,我们如果想单独调试某个线程的断点,而被其他线程影响.

我只是想调试下面的线程,而不想上面的线程执行影响我,那么我只需要打上多多线程断点即可,操作如下

 8 stream断点

用于java8+等版本的stream使用时的断点,可以充分展示每个链式操作的数据流转过程

9断点回退

用于方法级别的调试时,回退到方法的进入之前,用于手速太快,不想重启,想重新执行一次断点的场景

ps:(1.一定要是方法调用,2.引用对象不建议使用,回退后对象的内容会发生改变)

如下,我们可以看到回退后,基本数据类型sum,从2回退到了0,可以重新进入方法

高级技巧整理

临时执行表达式/修改变量的运行值

可以查看当前方法里面的变量信息,右键变量可以操作变量里面的值或者复制出来以及新建 Watch 等

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

然后回车,马上就能看到结果 

当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

参考链接

【精选】玩转 IDEA Debug 功能_idea lambda 断点-CSDN博客

关于idea的八种断点调试_idea断点调试_张名佳的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一个错误

通过Resource注解,将IStateHandler接口的实现类 StateHandlerImpl注入进来 Resource private IStateHandler stateHandler;Resource注解默认按照名称进行装配,这里抛出异常是因为IStateHandler和StateHandlerImpl都被 Spring 容器管理,在进行…

requestAnimationFrame是什么?介绍 如何使用?适用场景?有哪些缺点和优点,兼容性怎么样?

文章目录 前言是什么?如何使用适用场景优点和缺点兼容性后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端系列文章 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技…

【nlp】2.2 传统RNN模型

传统RNN模型 1 传统RNN模型1.1 RNN结构分析1.2 使用Pytorch构建RNN模型1.3 传统RNN优缺点1 传统RNN模型 1.1 RNN结构分析 结构解释图: 内部结构分析: 我们把目光集中在中间的方块部分, 它的输入有两部分, 分别是h(t-1)以及x(t), 代表上一时间步的隐层输出, 以及此时间步的…

gurobi最新下载安装教程 2023.11

文章目录 gurobi下载gurobi安装gurobi lincese获取添加系统环境变量 gurobi和python gurobi下载 https://www.gurobi.com/ 点击下载中心 download center 可以直接选择 Gurobi Optimizer下载 gurobi安装 gurobi可以通过python进行调用,但是需要先获得gurobi的li…

分布式服务器架构的优点有哪些?

在当今数字化时代,随着互联网的普及和技术的不断进步,企业和组织面临着处理越来越多的数据和用户请求的挑战。为了应对这些挑战,分布式服务器架构应运而生。分布式服务器架构通过将任务和数据分散到多个服务器上,提供了许多优点&a…

利用Python群组分析方法剖析客户行为

大家好,如今的企业有能力收集大量的数据,这些数据可以帮助企业制定更好的策略并了解其客户的行为。Cohort分析可以在其中发挥作用,Cohort分析是一种了解客户行为或用户互动的强大工具,并为企业提供有价值的见解,本文中…

fastdfs节点扩容

在巡检时发现,fastdfs 容量使用量比较大,原先规划的是1T,经过半年的运行已使用500G左右,并且按照每月100G左右 的量再增加。 fastdfs本身是分布式文件系统,扩容的方式有 添加storage磁盘 与 添加 group, 通…

Lua的resty-request库写的一个爬虫

为了使用Lua的resty-request库进行爬虫,需要先安装OpenResty和resty-request库,并将其引入到Lua脚本中。然后,可以使用resty-request库提供的函数来发送HTTP请求和处理HTTP响应。 以下是一个使用resty-request库进行爬虫的示例代码&#xff1…

SpringBoot 是否必传参数之嵌套校验(3)

文章目录 前言嵌套校验Controller层请求示例前言 本文基于SpringBoot 3.1.2,使用嵌套校验来优雅的处理参数是否必传校验。 嵌套校验 什么是嵌套使用呢?就是一个对象中包含另外一个对象,另外一个对象的字段也是需要进行校验。示例如下: User@Data public class User imple…

sqlyog安装和网址

网址Downloads webyog/sqlyog-community Wiki GitHub 1. 2. 3. 4. 5. 6. 7.

图论12-无向带权图及实现

文章目录 带权图1.1带权图的实现1.2 完整代码 带权图 1.1带权图的实现 在无向无权图的基础上,增加边的权。 使用TreeMap存储边的权重。 遍历输入文件,创建TreeMap adj存储每个节点。每个输入的adj节点链接新的TreeMap,存储相邻的边和权重 …

出入库管理系统vue2前端开发服务器地址配置

【精选】vue.config.js 的完整配置(超详细)_vue.config.js配置_web学生网页设计的博客-CSDN博客 本项目需要修改两处: 1、vue开发服务器地址:config\index.js use strict // Template version: 1.3.1 // see http://vuejs-templa…

传奇手游天花板赤月【盛世遮天】【可做底版】服务端+自主授权+详细教程

搭建资源下载地址:传奇手游天花板赤月【盛世遮天】【可做底版】服务端自主授权详细教程-海盗空间

概念解析 | LoRA:低秩矩阵分解在神经网络微调中的作用

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:基于低秩矩阵分解的神经网络微调方法LoRA LoRA: Low-Rank Adaptation of Large Language Models LoRA由如下论文提出,详细信息请参见论文原文 https://arxiv.org/abs/2106.0968…

使用MybatisPlus时出现的java.lang.NullPointerException异常~

错误描述如下所示: 错误原因:Junit的导包错误 单元测试的包有如下所示两个 我们应该根据springboot的版本进行选择, 在Spring Boot 2.2.X以后使用import org.junit.jupiter.api.Test Junit5 在Spring Boot 2.2.x之前使用import org.junit.T…

Qt 自定义event

本文章从属于 Qt实验室-CSDN博客系列 自定义事件携带数据 在某些情况下,可能需要通过事件携带一些额外的数据 可以通过自定义事件类来完成 一种实现方法是自定义一个QObject的子类,通过property来携带数据 class MyEvent : public QObject,public …

赛宁网安获评“铸网-2023”江西省实网应急演练优秀支撑单位

近日,南京赛宁信息技术有限公司(赛宁网安)获得了江西省工业和信息化厅颁发的“优秀支撑单位”荣誉。 该荣誉表彰是对赛宁网安在“铸网-2023”江西省工业领域网络安全实网应急演练中提供全程技术支撑能力的认可。 本次实网应急演练聚焦工业企…

理疗养生服务预约小程序要如何做

不少人面对身体症状疼痛,往往不会选择去医院,而是去理疗养生馆,选择艾灸、拔罐、中药贴敷等方式治疗改善或减轻疼痛。随着人们对中医信赖度增强,理疗养生市场增长迅速。 而在增长的同时,我们也注意到理疗养生馆经营痛…

Android画个圆点状态灯

1、创建一个 XML 文件在 res/drawable 目录下&#xff08;默认为黑色&#xff09; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"android:shape"oval"><…

Elasticsearch:检索增强生成 (Retrieval Augmented Generation -RAG)

作者&#xff1a;JOE MCELROY 什么是检索增强生成 (RAG) 以及该技术如何通过提供相关源知识作为上下文来帮助提高 LLMs 生成的响应的质量。 生成式人工智能最近取得了巨大的成功和令人兴奋的成果&#xff0c;其模型可以生成流畅的文本、逼真的图像&#xff0c;甚至视频。 就语…