当你习惯了测试驱动的开发(Test-Driven Development,TDD)之后,你会发现自己越来越少地使用调试器(debugger)——如果你发现程序里有什么问题,你不应该用调试器去抓bug,而是应该用一个单元测试用例来揭示问题的所在。由于存在细粒度、完整覆盖的单元测试用例,每个bug都相当清晰,于是很少会需要各种巧妙的调试手段了。
——————————
Uncle Bob's Software Craftsmanship Corner
Debuggers are a wasteful Timesink
by Robert C. Martin
November 29, 2003
Summary
As debuggers have grown in power and capability, they have become more and more harmful to the process of software development.
Debuggers have become immensely powerful. A good debugger is a very capable tool. With it, an experienced developer can step through very complex code, look at all the variables, data structures, and stack frames; even modify the code and continue. And yet, for all their power, debuggers have done more to damage software development than help it.
Since I started using Test Driven Development in 1999, I have not found a serious use for a debugger. The kinds of bugs I have to troubleshoot are easily isolated by my unit tests, and can be quickly found through inspection and a few judiciously placed print statements.
I teach a lot of classes in C++, Java, C#, TDD, XP, Patterns, etc. In those classes I often have the students write code. It is not unusual for me to find a student with his or her nose buried in a debugger, painstakingly stepping from line to line, examining variables, setting breakpoints, and generally wasting time. The bug they are tracking could be found through simple inspection of the code.
I consider debuggers to be a drug -- an addiction. Programmers can get into the horrible habbit of depending on the debugger instead of on their brain. IMHO a debugger is a tool of last resort. Once you have exhausted every other avenue of diagnosis, and have given very careful thought to just rewriting the offending code, *then* you may need a debugger.
分享到:
相关推荐
3. **故障排查**:在开发过程中,如果遇到程序运行错误或者设备异常,USB调试器可以帮助开发者查看单片机的运行日志,追踪并定位问题。 4. **在线调试**:某些高级的USB调试器支持硬件断点、单步执行等功能,使得...
在AXD调试器中配置Muti-ICE,加载AXF文件后,调试过程与Wiggler相似。 4. BDI调试器: BDI调试器需要通过BDI 1000 Driver软件进行配置,包括串口连接、波特率设置、IP地址、子网掩码和网关的配置。配置完成后,...
《Windows简单调试器源码解析》 Windows调试器是一种强大的工具,用于检查、分析和调试运行中的应用程序。这里我们关注的是一款约2700行代码的简单调试器,名为MyDbg。这款调试器虽然相对简洁,但却包含了调试器的...
蓝牙调试器是一款强大的移动应用程序,专门设计用于通过蓝牙技术进行设备间的数据传输和控制。它在Android平台上运行,为开发者和普通用户提供了一种便捷的方式来测试和调试蓝牙功能。这款APP适用于各种场景,如...
Mstar USB调试器驱动是专为Mstar(晨星半导体)芯片组设计的一款重要的软件工具,主要用于帮助开发者和工程师在Windows操作系统环境下对基于Mstar芯片的设备进行调试和测试。这款驱动程序支持多种Windows系统,包括...
本文旨在详细介绍如何在MPLAB® X IDE中使用PICKit™ 3在线调试器,包括安装过程、目标连接器引脚排列、创建项目、编译与运行项目等方面的内容。 #### 二、准备工作:安装最新的软件 - **下载与安装**:首先从...
vt框架使用的airhv,增加了自建调试体系部分 ept hook. 无痕int3. 自建调试体系隐藏debugport. 支持pdb符号自动下载,省去寻找特征码步骤,轻松兼容不同系统版本. 5.zip文件是编译好的成品 支持平台 win10 x64 intel ...
【MyDebug调试器源码分析】 MyDebug是一个简单的命令行调试器,它的源码提供了深入理解调试原理和实践的机会。这个调试器虽无图形用户界面,但通过控制台交互,实现了多个关键功能,包括查看汇编代码、地址跳转和...
1. **备份数据**:在进行固件更新之前,最好备份调试器中的任何重要数据,以防更新过程中发生意外。 2. **断电安全**:在固件更新过程中,切勿切断电源或强制断开设备,以免损坏调试器。 3. **技术支持**:如果在...
调试器是开发过程中的关键工具,它允许开发者检查代码执行情况,查找并修复错误。GDB(GNU调试器)是一个开源的、跨平台的调试器,能够调试多种编程语言,包括C++。这里的GDB版本是7.4,与QT Creator 2.8.0版本兼容...
gDEBugger是OpenCL和OpenGL高级的调试器,分析器和内存分析器。它可以追踪在OpenCL和OpenGL之上的应用程序的活动,并发现系统内部的活动。 gDEBugger是一个高级的OpenCL和OpenGL调试器,分析器和内存分析器。它可以...
智能电表通信协议调试器是针对DL/T 645规约进行开发的一款专业工具,主要服务于电力系统中智能电表的数据交互与调试工作。DL/T 645规约是中国电力行业制定的一种通用的电能表通信协议,用于实现电表与远程集中器、...
总的来说,USBCAN调试器是CAN系统开发和维护的重要工具,它简化了CAN网络的调试过程,提高了工作效率。通过与ZLG设备的兼容性,用户能够享受到更广泛的硬件支持和服务。正确安装和使用提供的驱动程序及文档,将有助...
总之,DL/T645协议调试器是理解和优化DL/T645协议的重要手段,它简化了通信调试过程,提高了工作效率,对于推动电力行业的智能化发展具有重要意义。在面对复杂多变的电力通信环境时,熟练运用此工具,将有助于我们更...
3. **错误检测与处理**:当通信过程中出现错误,如数据帧格式错误、超时未响应等,调试器会进行错误检测,并尝试重传或采取相应措施。 4. **协议解析**:调试器能解析接收到的电能表数据,将二进制数据转化为可读的...
如何你在vs调试中出现 调试器dll msdbg2.dll 未正确安装 请尝试安装此工具 来自vs2008安装包中的Remote Debugger/x86/rdbgsetup.exe
如果你想要调试类型体源码,需要加载一个调用类型体的PL/SQL程序,因为Oracle调试器不允许直接调用类型体。 **步骤2:为调试编译源代码**: 为了使Oracle能够检查PL/SQL程序变量的值,需要收集一些调试辅助信息。这...
中文:HTTP协议调试器英文:Http/Https Protocol Debuger版权:电猫工作室(EMouze)1.支持HTTP和HTTPS(SSL加密)网络协议的跟踪和调试。2.可以查看到HTTP/HTTPS协议连接的详细过程和返回结果。3.允许GET/POST/HEAD/PUT...
OD(OllyDebug)V2.01 汇编及分析调试器简体中文免费版本软件包含有英文配置补丁,原版界面等,是最全的OD完全版 OD(OllyDebug)V2.01 汇编及分析调试器简体中文免费版主要说明: 1、界面采用 BoOMBoX/TSRh2004 制作...