IDEA高效调试,你真的会了吗

news2024/11/24 15:02:42

大家好,这里是 一口八宝周 👏
欢迎来到我的博客 ❤️一起交流学习
文章中有需要改进的地方请大佬们多多指点 谢谢 🙏

由于平时工作中经常需要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断点的个人使用方式,希望能给排查问题的你一些帮助!

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

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

相关文章

Linux生成动态库

动态库 1.命名规则 Linux: libxxx.so lib :前缀(固定的);xxx:动态库的名字(自己取);.so:后缀(固定的); Windows&#…

.NET Framework中自带的泛型委托Action

Action<>是.NET Framework中自带的泛型委托&#xff0c;可以接收一个或多个输入参数&#xff0c;但不返回任何参数&#xff0c;可传递至多16种不同类型的参数类型。在Linq的一些方法上使用的比较多。 1、Action泛型委托 .NET Framework为我们提供了多达16个参数的Action…

链表面试OJ题(1)

今天讲解两道链表OJ题目。 1.链表的中间节点 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个…

轻量封装WebGPU渲染系统示例<19>- 使用GPU Compute材质多pass元胞自动机(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifeMultiMaterialPass.ts 系统特性: 1. 用户态与系统态隔离。 细节请见&#xff1a;引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调…

1200*D. Same Differences(数学推公式)

Problem - 1520D - Codeforces 解析&#xff1a; 统计 a [ i ] - i #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int t,n,a[N]; signed main(){scanf("%lld",&t);while(t--){scanf("%lld",&n);…

一些对程序员有用的网站

当你遇到问题时 Stack Overflow&#xff1a;订阅他们的每周新闻和任何你感兴趣的主题Google&#xff1a;全球最大搜索引擎必应&#xff1a;在你无法使用Google的时候CSDN&#xff1a;聊胜于无AI导航一号AI导航二号 新闻篇 OSCHINA&#xff1a;中文开源技术交流社区 针对初学…

FPGA设计过程中有关数据之间的并串转化

1.原理 并串转化是指的是完成串行传输和并行传输两种传输方式之间的转换的技术&#xff0c;通过移位寄存器可以实现串并转换。 串转并&#xff0c;将数据移位保存在寄存器中&#xff0c;再将寄存器的数值同时输出&#xff1b; 并转串&#xff0c;将数据先进行移位&#xff0…

RHCSA --- Linux系统文件操作

rm -rf * 删除当前目录下的所有文件及目录&#xff0c;并且是直接删除&#xff0c;无需逐一确认命令行为 touch&#xff1a; 不存在时创建&#xff0c;存在时更新文件时间戳 touch 1 2 3 4 创建多个文件 touch {1..4}{2..4} 花括号展开创…

STM32_project:led_beep

代码&#xff1a; 主要部分&#xff1a; #include "stm32f10x.h" // Device header #include "delay.h"// 给蜂鸣器IO口输出低电平&#xff0c;响&#xff0c;高&#xff0c;不向。 //int main (void) //{ // // 开启时钟 // RC…

开关电源怎么进行老化测试?有哪些测试方法?

一、开关电源老化测试原理 开关电源老化测试是检测电源长期稳定性和可靠性的重要测试方法。通过模拟开关电源在实际工作环境(如高负荷、高温等)中的长时间使用&#xff0c;来验证其性能、稳定性和可靠性。老化测试的原理主要基于以下概念&#xff1a; 1. 加速老化原理 老化测试…

Ntrip协议是什么?(RTK)

NTRIP (Networked Transport of RTCM via Internet Protocol) 是一种将实时差分导航数据通过互联网传输的协议。它被广泛应用于全球卫星定位系统 (GNSS) 定位和导航领域&#xff0c;以提高 GNSS 定位的精度。 NTRIP 是基于 TCP/IP 的协议&#xff0c;使用 HTTP/1.1 进行数据传…

vue中异步更新$nextTick

1.需求 编辑标题, 编辑框自动聚焦 点击编辑&#xff0c;显示编辑框让编辑框&#xff0c;立刻获取焦点 2.代码实现 <template><div class"app"><div v-if"isShowEdit"><input type"text" v-model"editValue"…

leetcode链表

这几天手的骨裂稍微好一点了&#xff0c;但是还是很疼&#xff0c;最近学校的课是真多&#xff0c;我都没时间做自己的事&#xff0c;但是好在今天下午是没有课的&#xff0c;我也终于可以做自己的事情了。 今天分享几道题目 移除链表元素 这道题我们将以两种方法开解决&…

linux内的循环

格式 while 【 条件判断 】 do 语句体 done 上图 第一次代码&#xff0c;输入语句在外面&#xff0c;结果输入完&#xff08;非hello&#xff09;程序不断循环&#xff0c;没办法&#xff0c;ctrlc给程序终止了&#xff0c;然后把用户输入的语句放到了循环体里面…

【数据结构初级(2)】单链表的基本操作和实现

文章目录 Ⅰ 概念及结构1. 单链表的概念2. 单链表的结构 Ⅱ 基本操作实现1. 定义单链表结点2. 创建新结点3. 单链表打印4. 单链表尾插5. 单链表头插6. 单链表尾删7. 单链表头删8. 单链表查找9. 在指定 pos 位置前插入结点10. 删除指定 pos 位置的结点11. 单链表销毁 本章实现的…

阿里云服务器优惠购买和搭建网站全流程(图文教程)

阿里云服务器使用教程包括云服务器购买、云服务器配置选择、云服务器开通端口号、搭建网站所需Web环境、安装网站程序、域名解析到云服务器公网IP地址&#xff0c;最后网站上线全流程&#xff0c;新手站长xinshouzhanzhang.com分享阿里云服务器详细使用教程&#xff1a; 一&am…

win11系统完全卸载Oracle11g图文详细步骤

完全卸载Oracle11g图文详细步骤 卸载步骤&#xff1a; 1.停用Oracle服务 2.卸载Oracle产品 3.删除注册表 4.删除环境变量 5.删除安装文件 6.重启电脑 文章目录 1. 停用Oracle服务2. 卸载Oracle产品3. 删除注册表4. 删除环境变量5. 删除安装文件6. 重启电脑扩展了解一下 Oracle相…

Requests 与接口请求构造

Requests 是一个优雅而简单的 Python HTTP 库&#xff0c;其实 Python 内置了用于访问网络的资源模块&#xff0c;比如urllib&#xff0c;但是它远不如 Requests 简单优雅&#xff0c;而且缺少了许多实用功能。所以&#xff0c;更推荐掌握 Requests 接口测试实战技能&#xff0…

oracle_19c 安装

oracle安装部署 1、安装docker,docker-compose环境。 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun curl -L "https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/b…

springboot初始化

一、 SpringBean 1. Spring Bean 1) Bean定义 Bean是什么&#xff0c;Bean是特殊的对象&#xff0c;交由Spring管理的Java对象&#xff0c;这类对象在创建的时候会根据spring的一些注解&#xff0c;和IOC&#xff0c;属性如果使用Autowired的话&#xff0c;会自动赋值。Bean…