《调试九法:软硬件错误的排查之道》读书笔记

《调试九法:软硬件错误的排查之道》读书笔记
作者-华雄
1、理解系统
阅读手册
理解系统的基本方法就是阅读手册
注意手册上的信息也不可全信
理解系统行为是不破坏系统的第一步
逐字逐句阅读整个手册
彻底地阅读系统手册
获取最新的文档或手册
参考设计和样本程序不一定是完全正确的
知道什么是正常的
必须知道系统正常工作状态
必须掌握基础知识
知道工作流程
必须知道查找问题的路径
了解其工作原理
了解你的工具
使用正确的工具
了解工具的局限性
必须了解开发工具
查阅手册
养成良好的查阅习惯
2、制造失败
制造失败
当你发现一个故障时,试着让它再次发生
可以观察它
专心查找原因
可以判断是否已修复问题
记录下你做的每一个步骤
从头开始
每个步骤都是引发错误的原因,不要忽略最简单的步骤
引发失败
自动化测试工具有助于帮助解决问题
不要模拟失败
引发失败(正确)和模拟失败(错误)是存在非常大的差别
正确的方法是模拟那些导致失败发生的条件,不是试图模拟失败机理本身
不要猜测失败机理,也不要改变测试条件
利用工具观察发生了什么错误
不要引发新的错误或问题
如何处理间歇性BUG
找到影响问题的条件
控制影响的条件
增加条件的随机性
不要引发新的错误
如果做了所有尝试之后问题仍然间歇性发生
仔细观察错误
查找线索
确认问题是否已经修复
仔细观察失败
捕获足够多的相关信息
不要盲目相信统计数据
不要被表面现象所误导
捕获足够多的相关信息
是已修复的bug,还是仅仅由于运气好,它不再发生了
运行的样本越多,结果就越正确
使用自动测试
“那不可能发生”
让问题再次发生
尝试心的测试策略,指明问题的真正根源隐藏在哪里
永远不要丢掉调试工具
有时候,一种调试工具可以在其他的调试场合重复使用
3、不要想,而要看
观察失败
要想找到故障所在,必须真正看到发生故障的情况
仔细观察故障,找到足够多的问题细节
如果不了解实际情况发生的全过程,极有可能曲解很多问题
一定要亲眼看到实际错误是如何发生的
观察往往比猜测能够更快地找到问题
捷径并不会带你找到问题的根源
查看细节
观察细节,直到把问题的原因锁定在几种可能性之内
经验可以起到帮助作用
问题忽隐忽现
对系统进行插装
设计插装工具
调试器
过后构建插装
确保起始的设计环境与发现BUG时的环境相同
借助工具,发现问题
不要害怕深入研究
想解决问题就不要怕麻烦
添加外部插装
使用外部工具,发现问题
日常生活中的插装
使用精准仪器进行测试
海深堡测不准原理
不要让测试工具影响被测系统
猜测只是未来确定搜索的重点目标
某些特定的猜测,对某些问题比其他问题更容易出现,或者比其他问题更易于修复
4、分而治之
缩小搜索范围
采用“逐次逼近”方法缩小搜索目标范围
确定范围
确认问题的搜索范围,将其他问题排除在外
你在哪一侧
确认问题发生在哪一侧
插入易于识别的模式
在不易发现的bug中插入一个易于识别的模式,利于发现bug
不要因设置了新的条件而改变BUG
从有问题的之路开始查找问题
从错误的一侧开始排查
把分支点作为测试点。分别查看每个分支的一小段,以便确认哪个分支有问题
修复已知的BUG
有时候修复了一个问题,另一个问题也解决了,两个问题实际上是同一个bug
如果修复某个问题对其他问题有影响,一定要首先修复她之后再测试其他的问题
如果修复了一个问题将会引发新的问题,那么你可以尽早发现,并有更多时间处理新的问题
首先消除噪声干扰
再硬件中,噪声信号可能会引起各种难以查找的间歇性问题
5、一次只改一个地方
使用步枪,而不要使用散弹枪
针对特定位置、参数、变量进行排查与测试
隔离关键因素
用双手抓住黄铜杆
不要急于改变系统变量,需要明白发生了什么事情
新设置的条件会隐藏了原来的问题,有可能会引发真正的大灾难
更有效的方法是记住要做的事情,而不是记住不要去做什么
一次只改变一个测试
方便判断哪个参数有问题
与正常的系统进行比较
正常与失败的例子,对比示波器观察结果、代码、调试输出、状态窗口、任何调试工具所显示的结果
排除其他的干扰因素,减少到只与BUG有关
自从上一次能够正常工作以来你更改了什么
6、保持审计跟踪
记下你的每步操作、顺序和结果
必须清楚每一个步骤和每步执行的结果,以此确定在调试时应重点关注哪一步
魔鬼隐藏在细节中
怀疑并注意所有的细节
任何细节都可能是重要的
关联
将某些症状与其他症状或调试信息关联起来是非常有用的
用于设计的审计跟踪在测试中也非常有用
好记性不如烂笔头
把所有事情记下来,并备份,保存调试日志和跟踪记录,并且注明相关的事件和影响,把你的推理和修复操作以及其他内容全部记录下来。
7、检查插头
怀疑自己的假设
永远不要相信自己的假设,特别是当这些假设在一些无法解释的问题中是核心因素的时候
从头开始检查
对工具进行测试
工具与你的测试条件不一定是正确的配置,需要对工具进行相匹配的测试
8、获得全新的观点
寻求帮助
获得全新的观点
我们对任何事情都有偏见,这些偏见可能导致我们无法看清楚实际情况
有时候向别人解释问题也会使你会有全新的认识
询问专家
在任何情况下,专家都比我们更“理解系统”,会帮助我们更快,正确解决问题或提供解决办法
获取专业知识
借鉴被人的经验
你可能经验不足,但是向有经验的人求助,也可以帮你解决问题或提供解决问题的思路或办法
帮助无处不在,同事、朋友、网络、书籍等
到哪里寻求帮助
放下面子
bug发生了,以除掉bug为自豪,而不要非得自己除掉bug才为自豪
报告症状,而不是理论
报告症状,不要讲你的理论,不要把别人拖进你的思维定式中
描述发生的事,描述你看到的一切
9、如果你不修复bug,它将依然存在
检查问题确实已被修复
不要假设问题已被修复,而要测试它,无论问题和修复看起来多么明显,你都无法保证修复是有效的,直到做了测试
检查确实是修复措施解决了问题
制作失败,然后通过修复措施再次验证问题被修复,经过修复到失败,再从失败到修复这个过程之后,才能够证明你确实已经修复了问题
bug从来不会自己消失
如果你不修复它,它不会自动修复
使用最初导致它失败的方法再次制造失败
如果必须交付产品,那么在产品中设计一个用于捕抓bug的“陷阱”,以便产品在客户现场发生失败时把它抓住
从根本上解决问题
理解系统,有问题的地方可能是其他地方造成的
将影响系统工作的地方删除掉,以免我们制造失败
对过程进行修复
如果问题是原有设计的问题,那么修复设计问题,而不是出现问题后再想补救修复
10、通过一个案例讲述所有规则
案例。。。。。
11、从帮助台得到的观点
帮助台的限制
你是远程的
你所得到的信息,操作不一定是正确的
你的联系人不一定和你一样擅长这方面
你在排除故障,而非调试
首先给出一种应急之策,如果是bug,后续需要修复
规则,帮助台风格
理解系统
制造失败
不要想,而要看
分而治之
一次一改一个地方
保持审计跟踪
检查插头
获得全新观点
如果你不修复bug,它将依然存在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值