这样Debug,排查问题效率大大提升...

Xilinx PCIe IP核示例工程仿真流程与关键任务解析 本文详细解析了Xilinx PCIe IP核示例工程的仿真流程与关键任务。通过搭建仿真环境、解读初始化日志,并深入剖析TSK_TX_MEMORY_WRITE_32等核心任务的TLP报文生成与交互过程,帮助开发者掌握PCIe IP核的仿真调试方法,为实际硬件设计提供可靠的验证基础。 阅读详情

Debug是开发人员必备的基础技能,伴随着开发生涯,只要需要写代码,就一定有debug的诉求... 因为大部分开发同学都是用Debug来确认程序是不是预期进行(单元测试也可以)。

Debug一个非常常见的我们以为自己已经熟练掌握的技能,有点像说话一样,每个人都可以把话说出来,但不是每个人都能表达出影响力...

大家都会Debug,不过有些Debug的方式可能确实会效率更高一些,还是直接进入主题吧;

开始Debug

相信大家都知道如何开始Debug: 1、在Idea的某个程序文件的目标行旁边,点击一下,设置个小红点。 即断点 

2、使用Debug按钮运行程序,如果程序可以走到断点这里,就开始进入Debug模式。 

3、基本操作就是:

  • step in 进入方法内部
  • step over 直接执行到下一行
  • step out 跳出当前的方法

重复1,2,3步骤,刚开始调试的时候主要就是这几个步骤;

下面分享一下一些稍微隐藏一点的调试方法。

断点相关经验

只有满足某些条件才会进入断点

如果说Debug的位置是网关入口,那么流量会很大,各种类型的请求都会走到这个断点里面,如果不能按照条件进入断点,会非常影响我们的效率。

因为进入断点的请求,都不是我们想要的;这个时候可以对断点设置条件,当前请求中必须有满足什么条件才会进入Debug模式。

1、点击程序的目标行旁边,生成一个小红点; 2、右键小红点,可以在condition那里设置程序中的条件; 

举个例子,如下当用Debug运行的时候,是不会走到断点的。 

而且在设置完成断点条件后,断点旁边会多出一个?和普通的断点不同。 

Debug断点只生效一次,同时不阻塞系统

如果说Debug某个正在运行的系统,默认情况下会挂起所有的后续请求,很多人都以为系统死机了... 其实最后发现是你在调试。

有什么办法,可以在调试的时候不阻塞剩余的请求吗?
1、默认只断点一次; 2、断点的时候不挂起整个系统;

如下,通过断点管理器器,进入进来,或者右键断点,然后点击more可以进入进来 设置挂起选项,只挂起当前正在调试的线程,然后再下面勾选一旦命中移除断点。

静态断点,只是想看程序会不会运行到这里来(类似于动态日志)

想确定请求能不能走到某个位置,但是又不想进入debug模式,感觉太重了,能不能如果经过这一行就直接打个日志呢?

这对于有时候程序的一些方法没有打日志,但是又想确认是不是能执行到这里有帮助。

在断点配置里面勾选,命中后打日志,也可以自己加一些其他的输出:

  • 不要挂起程序
  • 命中处打日志

 

分组管理断点(系统不同链路的断点)

系统常用的链路主要就几条,而常调试问题的地方也只有几处,可以把这几处位置的断点管理起来,在遇到问题的时候直接把断点分组管理拿出来就可以了。

远程服务器Debug

这里主要是一个配置问题,和本地Debug区别不大,学会配置就好了。 启动程序的时候:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -jar 待发布的程序jar包名称.jar

在Idea里面: 

调试相关经验

程序已经进入断点了,这个时候要查问题了,有一些需要了解的吗。

快速执行到某个位置

有时候我们的断点没有设置在某个位置,但是也不想设置在哪个位置; 在Debug的时候想让程序直接运行到那个位置,怎么处理?

第一种方式: 鼠标移动到对应的行数,然后按下run to cursor按钮 

第二种方式:直接点击文件旁边的数字即可,运行到对应的行哪里 

回退重新开始执行

在一些复杂的链路中,方法调用很长,手一抖结果代码又运行了几行,这个时候想去重新开始执行这个断点怎么办?

常规操作是再模拟发出个请求,重新进入断点; 但其实Idea已经提供了对应的方式,直接撤回当前的帧即可,断点会重新进入方法开始执行。

在Frame的位置点击撤回按钮,就会重新进入这个方法开始运行

中断后续执行链路

如果说debug到一半发现可能会往数据库写入脏数据,想直接停止当前的调试,怎么做?

同样在帧的位置,右键,可以提前返回不继续运行,这个提前返回是针对当前的方法的,也可以直接抛出异常; 

调试Strem流

Java8之后的labmda表达式里面一般流程会多一点,也不是很好调试,Idea也有对应的工具,可以直接查看Strem流中的数据,在Debug Window下发,如果识别到labmda表达式后会展示出来。

 

断点的时候运行一些额外代码

在Debug模式下,Idea提供了一个类似于解释器的工具,可以输入一些额外的程序在运行,哪怕和本次debug无关;

当然有个店是这个表达式执行只会返回最后y一行语句的结果。

 

总结

  1. debug代码是一个常用而且很常见的技能,但是不是每个人都能很有效率的debug代码...
  2. 有一些idea隐藏的debug方式,虽然一些人不关注,但是有用并且能极大提升效率
  3. 文章主要介绍一些一些在实际项目中相对有用的可以提升debug能力的一些经验。最后如果说实在是有问题,但是又没办法进入调试模式,可以考虑arthas的trace和watch。
【大模型工程局】告别单打独斗:手把手带你构建多智能体系统(MetaGPT 启示录) 想象一下,不再是只有一个全知全能的 AI,而是有一群各有所长、能够独立思考和行动的“智能体”(Agent)。它们生活在一个共同的环境中,可以相互交流、协作完成共同目标,也可能为了有限资源而相互竞争。这就是多智能体系统(MAS)的核心图景。MAS 的关键特征:自治性 (Autonomy):每个智能体都能独立感知环境、做出决策并执行动作,无需外部直接控制。交互性 (Interaction):智能体之间可以通过某种通信机制(显式或隐式)交换信息、协调行为。 阅读详情

相关推荐

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 455

使用Cursor调试Python代码的详细步骤

使用 Cursor 调试 Python 代码是一个方便直观的过程,它提供了常见的调试操作,如设置断点、单步执行、查看变量和调用栈等。在使用过程中,你可以根据代码的具体情况灵活使用这些调试操作,以便更快地找到和解决问题。如果你在调试过程中遇到困难或有任何问题,欢迎随时与我交流,让我们一起优化你的代码调试体验。希望这个教程对你使用 Cursor 调试 Python 代码有所帮助,让你能更加熟练地开发和调试 Python 程序。

shine_du的博客 5283

经典EMC案例-汽车车载电子行车记录仪显示屏EMC BCI整改案例

拿到这款汽车前装车载电子行车记录仪,小编首先在实验室还原客户描述的现象,确定现象符合客户的描述,再根据现象出现的对应频率做好记录,因为通常BCI FAIL的现象不局现于一个频率点,然后通过这些现象及频点,再结合产品的构造、线束,分析构思出大致解决方案。

jack_luo4913的博客 3739

Cursor的详细使用指南

通过上述步骤和提示,你可以较为全面地使用 Cursor 进行项目开发,利用其强大的 AI 辅助编程功能和基本的代码编辑、项目管理功能,提高开发效率和开发体验。希望你能在使用 Cursor 的过程中,开发出优秀的软件和应用程序。如果你在使用过程中遇到任何问题或需要进一步的帮助,欢迎随时向我咨询,让我们一起探索 Cursor 的更多功能和使用技巧。

shine_du的博客 1万+

C++经典面试题100例及答案

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

usstmiracle的博客 3万+

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1094

Cursor 推出 Debug 模式:让 AI 真正「看见」你的 Bug!

— Cursor 2.2 引入的下一代调试范式Debug Mode 通过「运行时日志注入 + 人机闭环验证」,将模糊问题转化为确定性修复。

weixin_44058951的博客 2300

Halcon 形态学 开发案例 (开运算opening(先腐蚀再膨胀)、闭运算closing(先膨胀再腐蚀))

算子方法:功能:使用用户自定义的结构元素对区域进行开运算参数: Region(输入参数) :输入区域 StructElement(输入参数) :结构元素(区域) RegionOpening(输出参数) :开运算后的区域功能:使用圆形结构元素对区域进行开运算参数: Region(输入参数) :输入区域 RegionOpening(输出参数) :开运算后的区域 Radius(输入参数) :圆形结构元素的半径功能:使用矩形结构元素对区域进行开运算。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1619

Cursor的四大模式:Agent、Plan、Debug、Ask,到底怎么用?

摘要:Cursor编辑器提供四种AI协作模式,各有侧重:Ask模式用于咨询技术问题(不修改代码);Plan模式用于设计方案讨论(读取但不修改);Debug模式专注错误排查(扫描项目上下文);Agent模式可自动执行多文件修改(需谨慎使用)。最佳实践是根据任务复杂度选择合适模式:方案设计用Plan,具体实现用Agent,遇到问题切Debug,技术咨询用Ask。合理切换模式可显著提升开发效率,避免AI过度干预或无效修改。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 3530

影像技术实战02:FFmpeg 镜头切分误检、漏检问题排查与基于场景变化的稳定分镜方案

本文介绍了基于FFmpeg的镜头切分技术在实际应用中的常见问题及解决方案。文章首先指出单纯使用select='gt(scene,0.4)'命令进行镜头检测存在误检、漏检等问题,包括黑场、字幕变化被误判为镜头切换,以及相似场景切换被漏检等情况。随后提出了一套四层架构的稳定解决方案:1)用FFmpeg提取候选镜头变化点;2)解析变化点时间和分数;3)通过后处理过滤异常点;4)按时间点切割视频片段并生成报告。文中详细展示了Python实现代码,包括场景点检测、时间间隔过滤等功能模块,为视频剪辑、影视解说等场景提供

ai技术增长的博客 402

化工仿真软件:gPROMS二次开发_(1).gPROMS基础知识

在gPROMS中,模型是通过定义变量、参数和方程来创建的。模型可以是简单的单元操作,如换热器、反应器,也可以是复杂的系统,如整个化工流程。变量是模型中表示状态或输出的量。在gPROMS中,变量需要显式定义其类型和单位。# 定义变量VAR# 温度变量,单位为K# 压力变量,单位为Pa# 组分摩尔分数,数组变量参数是模型中表示常量或初始条件的量。参数同样需要定义其类型和单位。# 定义参数PAR# 理想气体常数,单位为J/(mol·K)# 反应器体积,单位为m^3# 初始摩尔数。

kkchenjj的博客 618

VSCode 和 Cursor:运行和调试指南

VScode、Cursor的运行调试| launch.json配置信息| python运行和调试| debug调试技巧

weixin_54037546的博客 1万+

openclaw中文版安装教程和常用命令

OpenClaw 中文版的和,涵盖本地一键部署、Docker 隔离部署、阿里云极速部署三种方式,以及六大类高频命令,方便你快速上手和日常运维。

suny8的专栏 3006

这样Debug,排查问题效率大提升...

debug代码是一个常用而且很常见的技能,但是不是每个人都能很有效率的debug代码...有一些idea隐藏的debug方式,虽然一些人不关注,但是有用并且能极大提升效率文章主要介绍一些一些在实际项目中相对有用的可以提升debug能力的一些经验。最后如果说实在是有问题,但是又没办法进入调试模式,可以考虑arthas的trace和watch。

Q54665642ljf的博客 276

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

你还在低效率的Debug吗?如何提高Debug的效率!

可以不夸张地说,程序员可能有一半的时间都在修bug。虽说,根据28原则大部分bug都可以在搜索引擎上搜到(业务性bug除外),但是往往剩下的那20%bug会花费我们80%的时间。 虽然解决这个问题最好的是方式减少产生bug,但是再怎么减都不可能减到0,我们还是有必要提高自己Debug的效率。 因为在Debug方面,水平高的人可能在效率上能领先至少一个数量级。我在这个行业从业将近9年,我见过太多这样的案例了。网上也流传过一个传播度很高的案例,有一个阿里内部的团队排查好几天未果的一个问题,去请教多隆大神,分分钟

A_pyf的博客 305

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

如何提高Debug效率

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「185」篇原创敬上大家好,我是Z哥。可以不夸张地说,程序员可能有一半的时间都在修bug。虽说,根据28原则...

Zachary的博客 626

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA线上排错神器之Remote JVM Debug(JVM远程Debug)

首先我们新建一个最简单的 Spring Boot 项目,输出 12345 是为了方便我们调试 通过 Maven 进行打包,并上传至远程服务器,我这里使用的虚拟机 使用以下命令运行 jar # JDK5-8 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-jvm-debug-0.0.1-SNAPSHOT.jar 以上参数可以在 IDEA 中找到,根据自己 JDK 的版本 copy 参数

杰森写代码 3828

Windows下debug/release下tesseract已编译的库

Windows下debug/release下tesseract已编译的库 【下载地址】Windows下debugrelease下tesseract已编译的库 该项目为Windows开发者提供了预编译的Tesseract OCR库,支持debug和release两种模式,显著简化了集成过程。debug版本包含详细的调试信息...

gitblog_06708的博客 919

终极指南:如何用 Debug Kit 快速提升 PHP 应用开发效率 [特殊字符]

Debug Kit 是 CakePHP 应用程序的调试工具栏和增强调试工具,能够显著提高 PHP 应用程序的开发效率。它让你快速查看配置数据、日志消息、SQL 查询和应用程序的计时数据,是每个 PHP 开发者必备的调试利器! ## 🔧 什么是 Debug Kit? Debug Kit 是一款专为 CakePHP 框架设计的调试工具栏,提供了丰富的调试功能。通过简单的安装配置,你就能在开发过程

gitblog_00004的博客 518

Eclipse快捷键、Debug调试

qq_45304277的博客 174

实用的 IDEA Debug 调试技巧(超详细案例)

Debug 是程序员的开发神器,使用好了可以帮助我们非常高效的工作、学习、排查问题等。毫不客气的说,是决定我们进阶到更高层级的一个重要技能。今天跟大家分享一下 IDEA 中 Debug 调试的各种技巧。需求代码测试:通过debug你才能知道你的代码究竟是怎么运行的,更容易发现问题问题排查:只要能进入到问题流程的debug,就没有排查不了的问题源码学习:源码通常很庞大,通过Debug 我们能更清晰的知道执行到哪个地方,执行时的各个变量数据Step over(F8):程序往下执行一行Step into(F7):

qq_43102730的博客 2万+

idea中debug模式

链接: 在Intellij IDEA中使用Debug

duanmy的博客 100

Arthas介绍

这篇文章为大家推荐一个为Java应用程序排查问题的非常好用的工具:Arthas,首先声明一下,这边文章并不是教大家如何使用,它只是一个搬运工,在Arthas的github上已经有非常详细的使用教程了。 Arthas(阿尔萨斯)是阿里巴巴开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas统统可以帮你解决 某个类是从哪个jar包加载的,为什么会报各种类相关的Exc...

刘梦浩的博客 1786
上一篇: “被裁员“! 有这份面试突击手册! 一周斩获6个offer!
下一篇: 对内 DDD 对外 API 之—对外 API 的设计理念
java_lujj
博客等级 码龄4年 18粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值