第二十三章 调试

调试时确定错误根本原因并纠正此错误的过程。

调试概述

让你有所收获的软件缺陷

  • 理解你正在编写的程序;
  • 明确你犯了哪种类型的错误;
  • 从代码的阅读者的角度分析代码质量;
  • 审视自己解决问题的方法;
  • 审视自己修正缺陷的方法;

寻找缺陷

科学的调试方法在运用经典的科学调试方法时,你会经历如下步骤:

  1. 通过可重复的试验收集数据;
  2. 根据相关数据的统计构造一个假说;
  3. 设计一个实验来证明或反证则会个假说;
  4. 证明或反正假说;
  5. 根据需要重复上面的步骤。

寻找缺陷的有效方法:

  1. 将错误状态稳定下来;
  2. 确定错误的来源;
    • 收集产生缺陷的相关数据;
    • 分析所收集的数据,并构造对缺陷的假设;
    • 确定怎样去验证或证伪这个假设,可以对程序进行测试或是通过检查代码;
    • 按照上一步确定的方法对假设做出最终结论;
  3. 修补缺陷;
  4. 对所修补的地方进行测试;
  5. 查找是否还有类似的错误。

寻找缺陷的一些小建议

  • 在钩爪假设时考虑所有的可用数据;
  • 提炼产生错误的测试用例;
  • 在自己的单元测试族中测试代码;
  • 利用可用的工具;
  • 采用多种不同的方法重现错误;
  • 用更多的数据生成更多的假设;
  • 利用否定性测试用例的结果;
  • 对可能的假设尝试头脑风暴;
  • 在桌上放一个记事本,把需要尝试的事情逐条列出;
  • 缩小嫌疑代码的范围;
  • 对之前出现过缺陷的类和子程序保持警惕;
  • 检查最近修改过的代码;
  • 扩展嫌疑代码的范围;
  • 增量式集成;
  • 检查常见缺陷;
  • 同其他人讨论问题;
  • 抛开问题,休息一下。

修正缺陷

  • 在动手之前要理解问题;
  • 理解程序本身,而不仅仅时问题;
  • 验证对错误的分析;
  • 放松一下;
  • 保存最初的原代码;
  • 治本,而不是治标;
  • 修改代码时一定要有恰当的理由;
  • 一次只做一个改动;
  • 检查自己的改动;
  • 增加能暴露问题的单元测试;
  • 搜索类似的缺陷。

调试中的心理因素

调试工具

  • 源代码比较工具;
  • 编译器警告信息;
  • 增强的语法检查和逻辑检查;
  • 执行性能剖测器;
  • 测试框架;
  • 调试器;

核对表:关于调试的建议

寻找缺陷的方法

解决语法错误的方法

修正缺陷的方法

调试的一般方法

要点

  • 测试同整个软件开发的成败息息相关;
  • 要想成功,系统化地查找和改正错误的方法至关重要;
  • 再动手解决问题之前,要理解问题的根本;
  • 将编译器警告级别设置为最严格,把警告信息所报告的错误都改正;
  • 调试工具对软件开发而言是强有力的支持手段。
posted @ 2019-09-22 16:09  Liam-Ji  阅读(203)  评论(0编辑  收藏  举报