不加断点调试的程序员是好程序员

iOS之Xcode断点调试 目录 一、Breakpoint(断点)调试 1.Edit Breakpoint (1)Condition (2)Ignore (3)action (4)Options 2.Disable Breakpoint 3.Delete Breakpoint 4.Reveal in Breakpoint Navigator 二、lldb命令 三、lldb命令详细使用 ... 阅读详情

小李看完上一篇文章《先做个"键盘侠", 再来写程序》以后, 每天晚上下班后回家不再打网游了, 开始苦练打字功夫, 熟记快捷键, 终于可以随心所欲, 双手如飞了。

但是真正下手编程序的时候怎么还是老卡壳呢,尤其是程序出了bug以后, 需要加很多断点, 输出很多变量来观察, 前面看看, 后边改改, 美妙的噼里啪啦键盘声就再也听不到了,严重的影响到了速度。

为什么旁边的小刘拿起圆珠笔一转, 计上心来,又可以接着噼里啪啦的敲键盘呢? 还有旁边的小王, 把头扬起来想一会儿,马上就能继续了。

小李决定趁吃饭的时候问问小刘。

小李: 兄弟, 你是咋弄的 ? 这么快就能找到程序的问题? 你咋不加断点呢?

小刘: 我也不知道啊, 反正我一想, 问题就找的八九不离十了

小李: #¥%%…………&

其实小李的情况在很多程序员身上都存在,他们的共同特征就是在编程过程中, 一出问题就加断点调试, 甚至经常一步一步来, 输出很多变量,仔细观察分析, 看起来很专业, 花了1个小时发现是个if else 写错了, 很多时间都被浪费掉了, 非常可惜。

迅速发现问题并且定位问题所在是区分普通程序员和优秀程序员的一个重要标志。

怎么样才能迅速定位问题呢?

关键就是: 你的脑子里得建立一个程序运转的模型, 程序要先在你的脑子里运转起来!

再讲个一直让我记忆犹新关于Rob Pike 的故事:

Rob Pike : 是 Unix开发团队成员,Go语言的核心人员

Ken Thompson : 是 Unix 和C 语言 的发明人

“在我加入贝尔实验室一年多后,我开始和Ken Thompson一起在开发一个针对由Gerard Holzmann设计的很小的图形化交换语言的即时编译器上做结对编程。 我打字比较快,所以我坐在电脑前,Ken站在我身后看我编程。我们开发的很快,但经常会遇到问题,而且可以看出来出错了——毕竟这是一个图形化的编程语 言。当程序出错时,我本能的一头扎进问题,检查报错跟踪信息,添加调试打印语句,启动调试器,等等,但Ken只是站在那思考,完全不理会我也不查看我们写的出问题的代码。一段时间后我发现一个规律,Ken经常会比我先找到问题出在什么地方,而且会突然的喊一嗓子,“我知道什么地方的问题了。”每次他的判断 都很准确。我认识到,Ken已经在脑海里构建了代码的模型,当有问题出现时,那是他脑子里的模型出了问题。在思考为什么会发生这些错误时,他能凭直觉找到模型中什么地方不对或发现写的代码跟这个模型什么地方有出入。”

思考, 不看代码的思考, 是最好的调试方式。

道理很简单, 在大脑里边调试程序远远比你手工做调试要快得多。

添加断点调试, 变量输出其实是不得已而为之, 在你的大脑调试不出来的时候才应该尝试。

各位,我希望你能够经常做这样的练习, 把代码在脑子里运转, 初始阶段先尝试一个函数, 然后是一个单元模块, 然后到一个组件, 等你能把整个系统都在脑子里运转起来, 你就可以做技术总监了 :-)

长按二维码, 关注"coderising"

加入QQ群:135769418 和更多热爱编程的朋友交流

现在群里有“小白扫盲班”, 每周布置作业,大家一起监督,一起学习。

“项目实战班”:可是真的项目需求哦,涉及大量Android,iOS, Web开发的技术, 同学们做完后参加工作,技术上就不用愁了。

0?wx_fmt=jpeg

Java 开发中 IntelliJ IDEA 的断点调试技巧 本文旨在为 Java 开发者提供全面、深入的 IntelliJ IDEA 断点调试指南。我们将从基础概念开始,逐步深入到高级调试技巧,覆盖 IntelliJ IDEA 调试功能的各个方面。文章首先介绍调试的基本概念,然后详细讲解各种断点类型及其应用场景,接着是实战案例和高级技巧,最后总结调试最佳实践和未来发展趋势。断点(Breakpoint):在代码中设置的标记,程序执行到此处时会暂停,允许开发者检查程序状态调试器(Debugger):用于控制程序执行并检查运行时状态的工具。 阅读详情

相关推荐

Tasking Error 和Warning的总结和解决

英飞凌芯片很好用却很小众,所以使用Tasking调试时的Error就不像Keil那样容易搜出解决办法,那么我以一个初学者的身份总结了近期调试的一些心得,有DAP Miniwiggler和开发板连接的Error,有Tasking在Build后出现的Error,有开发板由Memtool烧录程序的Error,以及对应的解决办法,高手看过别喷哦,希望可以或多或少的帮到初学者,更希望可以和大家一起学习英飞凌MCU。 觉得好用或是过后Error没了的话,请评论下,让大家看得到,谢谢!

【C#杂谈】一个有趣的Debug经历 —— 打个断点程序就能正常跑,取消断点程序就崩溃

不多说,最近3个月这种现象前前后后出现好几次了,今天又排查了一个这个问题: 程序崩溃,通过Debug来排查问题,各种断点挨个打上,Step Step Step …… 成功Pass。 然后依次减少断点个数,继续Debug,每次都能成功Pass。 直到所有断点取消,直接运行,程序崩溃。 ??????? 我模拟了一个这个现象,大家可以在下面的程序的Bomber类的GetReady()函数中打上断点,只要程序运行到断点,在局部变量中展开这个Bomber实例类,即可正常运行。取消断点,则程序会报错(“BOOOOMMM

几何螃蟹的代码笔记 3397

极简JEPA世界模型实战:低门槛复现LeWorldModel,CPU可跑

这次我们来看一个能让普通开发者真正上手跑起来的“世界模型”项目。如果你对Yann LeCun提出的JEPA(联合嵌入预测架构)框架感兴趣,但又苦于Meta官方实现过于庞大复杂,那么这个GitHub上4k star的项目就是为你准备的。它用极简的PyTorch代码(核心文件仅160-278行)完整复刻了包括LeWorldModel在内的五个JEPA核心变体,最大的亮点是: 门槛极低,普通笔记本甚至CPU就能跑,显存占用友好,非常适合学习和原理验证。 这个项目名为 keon/jepa ,完全开源。它剥离了工业级

weixin_29031161的博客 423

加断点能通过,不加断点出错

加断点能通过,不加断点出错的问题 程序中存在线程函数,线程函数中的引用变量为当前文件头文件声明的全局变量,会出问题。 将变量声明在app类中可解决这一问题。

Qt&MFC 1846

生信实战|EffectorP3.0在植物病原菌效应子预测中的高效应用

本文详细介绍了EffectorP 3.0在植物病原菌效应子预测中的高效应用。通过机器学习模型,该工具能快速从海量分泌蛋白中批量预测胞质与质外体效应子,显著提升研究效率。文章提供了从环境配置、RNA-seq数据处理到批量预测的完整实战流程,并分享了结果解读与避坑指南,是生信研究人员进行病原物效应子鉴定的必备利器。

weixin_29195615的博客 302

SAR成像系列:【9】合成孔径雷达(SAR)成像算法-波数域(omega-K)成像算法[也叫距离徙动(RM)算法](附Matlab代码)

合成孔径雷达(SAR)波数域(wK)成像算法也称为距离徙动(RM)算法,它不存在近似条件,可以对整个成像区域基于散射点模型进行精确聚焦。有的文章中称它为SAR成像的最佳实现。

zr2006_7的专栏 1万+

【Linux】gcc编译工具,断点的设置,gdb调试

常用命令l 查看源代码b 行号 或函数名或f条件(==10)info b 查看断点d 断点号 d 无 删除所有断点r 运行p 变量名 查看变量值set var变量名=变量值_新S 进入函数内单步n 不进入函数内单步C 继续运行q 退出gdb。

m0_55251293的博客 3020

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4704

Debug断点调试详解

Debug断点调试功能 文章目录Debug断点调试功能一、断点简介二、Debug控制面板三、Debug按钮的使用1. 跳转到当前Debug所在行2. 步过3. 步入4. 强制步入5. 步出6. 回退断点7. 运行到光标处8. 计算表达式9. 其余按钮介绍四、Debug其他功能1. 查看某一变量的值2. 条件断点3. 多线程调试4. 强制方法返回五、断点分类1. 行断点2. 详细断点(源断点)3. 方法断点3.1 作用一3.2 作用二4. 异常断点5. 字段断点六、JDK1.8 Stream调试 一、断点简介

立志成为一个前端、后端、测试全方位发展的程序员 2万+

Qt C++ + Qt 3D 的数字孪生工厂

以下是一个基于 **Qt C++ + Qt 3D** 的数字孪生工厂完整源码示例,集成了 **Qt 3D** 产线建模和 **WebSocket** 实时数据交互。ui->qualifiedProductsLabel->setText(QString("合格产品: %1").arg(data.qualifiedProducts));ui->totalProductsLabel->setText(QString("总产量: %1").arg(data.totalProducts));

寒寒豆豆软件公司的博客 149

UNet改进(6):基于注意力机制的多尺度医学图像分割方法

本文提出了一种集成多尺度注意力机制的UNet改进模型UNetWithAttention,用于提升医学图像分割性能。该模型在标准UNet架构基础上,设计了并行3×3、5×5、7×7卷积核的多尺度注意力模块,通过特征拼接和Sigmoid激活生成注意力权重,实现了对不同尺寸病变的自适应关注。模型采用分离式设计,将特征提取与特征选择解耦,在编码器-解码器各阶段嵌入注意力模块。实验表明,该方法在视网膜血管分割和肺结节检测任务中优于标准UNet,Dice系数和IOU分别提升2.6%和4.1%,同时保持计算效率。

2501_91516851的博客 1324

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

前言 断点调试是每个**程序猿(媛)**从业者避不开的技能之一,它到底有多重要呢?为了体现本文的重要性,我引用几个大佬的话来表达断点调试的重要性: 调试技巧比编码技巧更为重要,因为花费在调试上的时间往往比编码还多,学到的东西比编码中学到的还多 调试技能重要性甚⾄超过学习⼀门语⾔ 不会调试的程序员,肯定编制不出任何好的软件 因此:调试是一个程序员最最最基本的技能。 ...

架构师:通透,才能写出好代码! 1万+

第95章 安全工程师:Shell 脚本实现安全扫描、漏洞检测、日志审计

随着网络安全威胁日益复杂,传统的手动安全管理已无法满足现代企业的安全需求。Shell 脚本为安全工程师提供了强大的自动化能力,能够实现 7×24 小时的安全监控、快速漏洞扫描、智能日志分析和实时威胁响应。本章将系统介绍如何使用 Shell 脚本构建完整的安全防护体系,从基线检查到实时监控,帮助你打造自动化的安全运维能力。

猪猪侠 91

断点调试基本使用

1. 一个实际需求 在开发中,新手程序员在查找错误时,这时老程序员就会温馨提示,可以用断点调试 一步一步的看源码执行的过程,从而发现错误所在。 重要提示:在断点调试过程中,是运行状态,是以对象的运行类型来执行的 A extends B; B b = new A(); b.xx(); 2. 断点调试介绍 断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析从而找到

兮动人 2万+

ZYNQ microblaze boot.bin固化步骤

一,ZYNQ移植软核的原理FPGA规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设计中的那些全新的、独特的部分。这就像是你在开发应用程序的时候就不用直接去写驱动物理硬件的代码,而是直接调用Windows提供的API就行了。

wangjie36的博客 2782

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IDEA的Debug (断点调试) 技巧

​ 对栈面板的目标栈帧右键点击【Force Return】,将会强制结束程序(不会往后执行程序),通常用在需要结束当前断点,而不希望接下来的程序操作数据库的情况,这里值得注意的是,如果选则用。需要注意的是异常断点无需在具体的代码上打断点的,而是在断点详情页中直接添加,后续在执行时,如果抛出我们监听的异常,则会自动暂停在抛出异常的地方。(F8) :步过(Step over),程序向下执行一行,如果当前行上有方法不会进入该方法,常用于调试过程中不想进入调用方法体的情况。

你的大龙猫啊 5456

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java 如何进行线上断点调试?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/f641385712/article/details/93145454 每篇一句 但行好事,莫问前程 前言 断点调试对IT从业者不是一个陌生的概念,我认为它是每个程序猿(媛)从业者都避不开的且非常重要的技能之一。 那它到底有多重要呢?为了体现本文的重要性,我引用几个大佬的话来表述断点调试的重要性: 神秘大佬A:调试技巧比编码技巧更为重

_ 3460

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android Studio断点调试详解

本文目录概述调试方法第一步:添加测试代码第二步:添加断点第三步:调试show Execution pointStep OverStep IntoForce Step IntoStep Outrun to Cursor查看断点修改变量值停止调试 概述 众所周知,断点调试是一个合格程序员必备的一种技能,断点调试可以帮助我们查看程序运行期间每一步各变量的值,学会调试可以帮我们节省很多排查问题的时间,下面...

lucashu的博客 1万+

断点调试(debug)

IDEA的断点调试方法

淘尽红尘几多娇的博客 6162

java断点调试(debug)

断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析从而找到这个Bug断点调试是程序员必须掌握的技能。断点调试也能帮助我们查看java底层源代码的执行过程,提高程序员的Java水平。

2403_87486006的博客 1799

DeBug断点调试

DeBug也可以帮助程序员查看java底层源代码的执行过程在DeBug时,是运行状态,是以对象的运行类型来执行的。

WINorYU的博客 2273

Java断点调试

Java程序员应该知道的10个调试技巧 转自:http://www.kuqin.com/java/20120906/330130.html 断点调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面。 在开始之前,

一蓑烟雨任平生 2884

Debug 断点调试详解

Debug断点调试功能 文章目录 Debug断点调试功能一、断点简介二、Debug控制面板三、Debug按钮的使用1. 跳转到当前Debug所在行2. 步过3. 步入4. 强制步入5. 步出6. 回退断点7. 运行到光标处8. 计算表达式9. 其余按钮介绍 四、Deb...

心海非海_のBlog 3108

断点调试原理

断点调试原理 对于程序员来说,debug的时间往往比写程序的时间还要长。尤其对我这种专写bug为主的程序员来说,一个好的调试器意味着早点下班和休息。现在方便的调试器很多,有著名的Visual Studio(VS)等IDE,也有免费的Windbg和GDB等等。加个断点也很简单,就是按一下键而已。但你有没有想过,调试器Debugger并不能控制程序的执行顺序,为什么它可以让CPU在需要的地方停住呢? 今天我们就来揭开调试断点的神秘面纱,并通过一个实例来看看调试器实际都做了些什么。调试器能够随心所欲的停止程序

I want to know a little more. 1659
上一篇: 先做个“键盘侠”, 再来写程序
下一篇: 码农必备技能:烂代码的处理之道(上)
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值