调试 - wolai 笔记
软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。

0.调试活动

  • 确定程序错误的性质和位置。
  • 修改程序,排除错误。

1.调试步骤

(1)从错误现场入手,确定程序出错位置;
(2)找错误的内在原因;
(3)找到则排除错误,回归测试。
(4)否则,加测试用例证明猜测原因。

2.调试方法

2.1强行排错

(1)将内存内容打印出来分析

(2)程序特定部位设置打印语句

各关键变量改变部位、重要分支部位等,监视重要变量变化。

(3)自动调试工具。

程序语言调试功能或专门交互式调试工具,不必修改程序。如设置断点,观察程序断点处状态,包括变量、表达式值等。

2.2回溯法排错(小程序常用)

确定最先发现“症状”位置。人工沿程序控制流程向回追踪源代码,直到找到错误根源或确定错误产生范围。

2.3原因排除法

对分查找法、归纳法、演绎法

(1)对分查找法

  • 如已知每个变量在程序内若干关键点正确值,用赋值或输入语句在程序中点附近“注入”正确值,运行程序检查输出。
  • 正确,错误原因在程序上半部分;反之,在程序后半部分。
  • 反复使用,将程序出错范围缩小到容易诊断的程度。

(2)归纳法

归纳法是一种从特殊推断一般的逻辑方法。
归纳法调试的想法是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。
示例:

(3)演绎法

演绎法是从一般原理或前提出发,经过排除和精化的过程来推导出结论的逻辑方法。
  • 根据已有测试用例,设想所有可能出错原因;
  • 逐个排除不正确的;
  • 验证余下假设确是出错原因。

Comment