`
江南白衣
  • 浏览: 550051 次
  • 来自: 广州
社区版块
存档分类
最新评论

debug经验一二三

阅读更多
    作者:江南白衣 

     昨天翻翻《程序设计实践》的Debug一章,里面用C写的例子早已被风吹的没了颜色,不随语言流转的就只有结尾那几句经验谈。但大学里向来是连这几句话也懒得教的,一定要大家从“put print statements in the program to find the bug” 开始,和bugs共同生活几年后,自个养成条件反射式的debug习惯。

     面对Bug,正确的生理反射应当是找线索而不是直接跳到Step 2蛮干:
        一、找熟悉的模式。人应该了解自己当然也包括自己常犯的错误,还有是检查那些经常犯事的代码模块。
        二、最近改过的代码。
        三、如果错误是由特定数据和操作引起的,思考这些输入的特征。
        四、如果是系统模块输出的错误,第一时间拷下来google。(不过也要提防有些系统的输出信息完全不靠谱)

    找没找到线索,然后都要开始定位错误。
    定位的方法,是经典不过的--分而治之:注释一些代码,减少、hardcode一些输入值和中间值,函数返回值等等。
    如果没有明显的线索,可单步执行,同时察看多个变量的debug工具就要及早出场,它能让你看到程序实际的执行情况而不是你思想里早就预设的误区。
    不过,断点设在哪里,先注释、hardcode哪些代码这种深刻决定debug效率的抉择,就很讲经验和最近的运势了!

     如果埋头苦干都没有结果,那可能是思维有了误区,就该拉个人过来和你聊一下天气和这个bug啦(但是注意别拉到太笨的,鸡和鸭讲的)。又或者,再回头看看是不是一些极低级的错误,比如链接库的版本错啦,根本没有重编译啦....

     改完bug后,好习惯是再看一眼别的地方中会不会还有同类的虫虫没杀掉。

    ----延伸阅读《Code Complete 2nd》中Debugging 一章。




分享到:
评论

相关推荐

    TM4C123G_LaunchpadDebuger驱动&例程

    通过分析和运行这些例程,新手可以快速上手,而有经验的开发者也能从中获取灵感,解决实际问题。 总结起来,TM4C123G_LaunchpadDebuger驱动及例程资料包是一个全面的开发工具集合,它不仅提供了调试器和虚拟串口的...

    TM4C123G_LaunchpadDebuger驱动&例程.zip

    总的来说,TM4C123G_LaunchpadDebuger驱动及例程资源包为开发者提供了一个全方位的学习和开发环境,无论你是初学者还是有经验的工程师,都能从中受益。通过深入研究这些资料,你可以熟练掌握TM4C123G微控制器的使用...

    Android123 Android 开发

    【Android123 Android 开发】这一主题涵盖了Android平台的软件开发知识,主要涉及源码分析和工具使用。在Android应用开发中,源码分析是理解系统底层运作、优化性能和解决问题的关键步骤,而工具使用则能提升开发...

    TM4C123BE6PM微控制器

    - **社区**: 用户可以通过官方社区与其他开发者交流经验,解决问题。 #### 七、Cortex-M4F处理器 - **结构框图**: 数据手册中提供了详细的处理器结构框图。 - **编程模型**: 描述了处理器的工作模式、堆栈管理、...

    ncu123新塘开发板资料

    开发板还支持Serial Wire Debug(SWD)接口,以及2个观察点和4个断点,方便开发者进行调试。 #### 内存配置 在内存方面,NCU123系列提供36K/68K字节的程序存储器(APROM),4K字节的加载器存储器(LDROM),以及...

    JAVA工程师简历模板.docx

    - **开发工具**:掌握了JUnit、Debug调试、log4j日志管理和SVN版本控制,以及MyBatis数据库管理工具。 - **服务器配置**:熟悉Tomcat、Apache等服务器的配置。 - **开发工具**:熟练使用MyEclipse和Eclipse等开发...

    数据结构处算法分析――读书笔记.doc

    从描述和标签可以看出,这是一个关于数据结构和算法分析的读书笔记,作者对书中的内容进行了总结和整理,并添加了一些自己的心得体会和经验。 从部分内容可以看出,作者选择了《数据结构与算法分析——C 语言描述》...

    VB连接数据库技术课件、例题

    **VB连接数据库技术** ...无论你是初学者还是有经验的开发者,都能从中获得宝贵的实践经验。通过学习这些内容,你将能够熟练地利用VB和ADO来处理各种数据库任务,为你的应用程序增添强大的数据处理能力。

    用keil调试ADS生成的执行文件

    - 对于使用过程中遇到的技术难题,可以访问**www.mcu123.net/bbs**等论坛寻求帮助和支持。 - 参与社区交流,与其他开发者分享经验和技巧,有助于提高调试效率和技术水平。 #### 结论 通过上述步骤,我们可以有效...

    组成原理教学大纲

    - **实验要求**:实验课应包含综合性或设计性的实验项目,以增强学生的实践经验和创新能力。 #### 五、教学建议 - **实验计算机系统概述**:学生需要详细了解实验系统的技术指标和技术资料,了解计算机系统的整体...

    ios-IOS内置调试工具 - DebugMan.zip

    1. **日志打印**:DebugMan提供了一种高效且可定制的日志打印机制,支持自定义日志级别,如DEBUG、INFO、WARN、ERROR等,方便开发者根据不同需求控制日志输出的详细程度。 2. **网络请求监控**:它可以实时捕获应用...

    excelvba数组入门提高800例

    在Excel VBA编程中,数组是一种非常重要的数据结构,它允许你存储多个相关数据项,而无需为每个数据项创建独立的变量。本资源“excelvba数组入门提高800例”...无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    2022年关于计算机组装与维护实习报告四篇.docx

    总的来说,这份实习报告详细记录了学生在计算机组装与维护过程中的学习和实践,涵盖了硬件知识、操作技能和实践经验,旨在提升学生的动手能力和问题解决能力,为他们在IT行业的进一步发展打下坚实基础。

    ace 网上资料汇总

    在【描述】中提到的学习ACE的过程中,作者分享了自己的经验和步骤,以帮助初学者快速入门。以下是对这些步骤的详细解析: 1. **下载最新版本**:访问ACE的官方网站(http://deuce.doc.wustl.edu/Download.html),...

    Notepad++的QuickText插件

    例如,你可以创建一个用于打印调试信息的代码片段,触发词为`dbg`,内容可以是`printf("Debug: %s\n", __FUNCTION__);`,这里的`%s`就是一个占位符,实际使用时可以替换为当前函数名。 QuickText还提供了搜索功能,...

    [Lisp相关文档].Lisp.Quick.Reference

    根据提供的文档信息,我们可以深入探讨Lisp语言中的关键概念与技术细节。此文档名为“Lisp快速参考”,是一本关于Lisp编程语言的...无论是对于初学者还是经验丰富的开发者来说,掌握这些核心概念和技术都是十分必要的。

    pytool.rar_Python_

    例如,如果有一个十六进制文件名为`0x123.jpg`,我们可以用`int('0x123', 16)`将其转换为十进制的387。 转换完成后,我们需要更新文件名并移动或重命名文件。在Python中,可以使用`os.rename()`函数来实现这一操作...

    cource_s1_ALINX_ZYNQ(AX7Z035)开发平台基础教程.zip

    及实际的开发实践经验积累不断的修正和优化教程 http://www.alinx.com.cn 3/391 ALINYO ZYNQ开发平台基础教程 序 首先感谢大家购买芯驿电子科技(上海)有限公司出品的zYNQ的开发板AX7z035!您 对我们和我们产品的支持...

    Golang在京东列表页实践总结.pdf

    ### Golang在京东列表页实践的关键知识点 #### 一、背景与动机 - **动机**:为了解决京东列表页存在的几...此外,在解决开发过程中遇到的技术挑战时,团队采取了一系列有效的策略,为未来的项目提供了宝贵的实践经验。

    ARM 学习笔记.docx

    - 没有正确设置OM123跳线导致晶振不振荡。 - **解决方案**: - 参考万龙的ARM开发板使用手册。 - 细致检查硬件连接及软件配置。 通过上述详细的介绍, 我们可以看出ARM平台的开发涉及到了硬件设计、软件开发环境...

Global site tag (gtag.js) - Google Analytics