摘自《调试九法-软硬件错误的排查之道》
规则1:理解系统
规则2:制造失败
规则3:不要想,而要看
规则4:分而治之
规则5:一次只改动一个地方
规则6:保持审计跟踪
规则7:检查插头
规则8:获取全新观点
规则9:如果你不修改bug,它将依然存在
1、理解系统
- 阅读手册
- 仔细阅读每个细节
- 掌握基础知识
- 了解工作流程
- 了解工具
- 查阅细节
墨菲定律:事情如果有变坏的可能,不管这种可能性有多小,它总会发生。
1、制造失败
- 制造失败
- 从头开始
- 引发失败
- 但不要模拟失败
- 查找不受你控制的条件(正是它导致了间隙性失败)
- 记录每一件事情,并找到间隙性bug的特征
- 不要过于相信统计数据
- 要认识到“那”是可能会发生的
- 永远不要丢掉一个调试工具
3、不要想,而要看
- 观察失败
- 查看细节
- 植入插装工具
- 添加外部插装工具
- 不要害怕深入研究
- 注意海森堡效应
- 猜测只是为了确定搜索的重点
4、分而治之
- 通过逐次逼近缩小搜索范围
- 确定范围
- 确定你位于bug的哪一侧
- 使用易于查看的测试模式
- 从有问题的一端开始搜索
- 修复已知bug。bug互相保护,互相隐藏
- 首先消除噪声干扰
在查找问题时,“分而治之”是第一条需要使用的原则
5、一次只改一个地方
- 隔离关键因素
- 一次只改一个测试
- 与正常情况进行比较
- 确定自从上一次正常工作以来你改变了什么地方
6、保持审计跟踪
- 把你的操作、操作的顺序和结果全部记录下来。
- 要知道,任何细节都可能是重要的。
- 把事件关联到一起
- 用于设计的审计跟踪在测试中也非常有用
- 把事情记录下来
7、检查插头
- 置疑你的假设
- 从头开始
- 对工具进行测试
8、获取全新观点
- 征求别人的意见
- 获取专业知识
- 听取别人的经验
- 帮助无处不在
- 放下面子
- 报告症状,二不要讲你的理论
- 你提出的问题不必十分肯定
9、如果你不修复bug,它将依然存在
- 查证问题确实已被修复
- 查证确实是你的修复措施解决了问题
- 要知道,bug从来不会自己消失
- 从根本上解决问题
- 对过程进行修复