调试九法-软硬件错误的排查之道

本文转自 调试九发-软硬件错误的排查之道 读书笔记

规则1:理解系统
阅读手册:手册里有正确使用系统的方法。
仔细阅读每个细节:出现问题的地方可能就在你不感兴趣的那一章,不要惧怕手册的厚度。
掌握基础知识:知道什么是正常的,才能知道什么是错误的。
了解工作流程:有助于定位bug。
了解工具:调试工具能干什么,不能干什么。
查阅细节:去阅读手册,而不是猜测或回想手册上的内容。

规则2:制造失败
制造失败:目的是为了观察它,找到原因,并检查是否已修复。
从头开始:bug可能由一系列操作或者运行造成的,回到最初状态开始制造失败。
引发失败:试着让失败出现,而不是被动的等,尤其是间歇性失败。
但不要模拟失败:不要猜测失败产生的机理而去模拟一个系统,模拟的系统可能没有体现bug的根源,甚至产生新的bug。
查找不受你控制的条件(正是它导致了间歇性失败):改变能改变的任何参数,或者将变量设成常量,知道bug再次出现并一直出现。
记录每件事情,并找到间歇性bug的特征:记录运行状态,分析并找到出现bug时的状态特征。
不要过于相信统计数据:获得足够多的信息并分析,不要猜测。
要认识到“那”是可能会发生的:bug的根源可能是意想不到的,不要大喊“不可楞!!!”。
永远不要丢掉一个调试工具:没准哪天就能派上用场。

规则3:不要想,而要看
观察失败:发现bug不要猜测问题根源,而是要仔细观察bug到底是什么地方造成了bug。
查看细节:缩小范围。
植入插装工具:使用源代码调试器、调试日志、状态消息和printf。
添加外部插装工具:使用分析器、示波器、量表、金属检测仪、心电图仪和肥皂泡。
不要害怕深入研究:不要害怕找到更多的bug,虽然软件已经是成品,bug还是必须要修复的。
注意海森堡效应:测不准原理。当你为了观察失败而改变系统或插装工具时,避免所做的改变影响系统。
猜测只是为了确定搜索的重点:猜测还是必要的,但不要过多的猜测。

规则4:分而治之
通过逐次逼近缩小搜索范围:猜测1~100内的一个数字,只需7次。
确定范围:不要把初始范围设定的太小,如果数字是135而你却认为他在1~100内,那么你必须扩大范围。
确定你位于bug的哪一侧:在某一点检查系统,如果状态正确,则bug位于上游,反之位于下游。
使用易于查看的测试模式:从干净、清澈的水开始,以便当排放物进入河流时很容易看到它。
从有问题的一段开始搜索:正确的部分总是多于错误的部分,应该从有问题的地方开始,向后追查原因,不要在正确的地方浪费时间。
修复已知bug。bug互相保护,互相隐藏:因此一旦找到,立即修复它们。
首先消除噪声干扰:注意那些导致系统问题的干扰因素,但对一些无足轻重的问题不要过于极端,也不要为了追求完美而去修改所有地方,虽然他看起来不美,但它可以正确工作。

规则5:一次只改一个地方
隔离关键因素:当你观察某一个bug的问题时,不要改变与此bug不相关的因素。
用双手抓住黄铜杆:不要猜测并改变系统的不同部分,以便看看他们是否对问题有影响,这可能引起更多错误。
一次只改一个测试:使用步*,而不是霰弹*。
与正常情况进行比较:如果所有出错的情况都有一些特征,而这些特征是正常情况所没有的,那么你就找到了问题所在。
确定自从上一次正常工作以来你改变了什么地方:这个改变的地方是一个很好的调试起点。

规则6:保持审计跟踪
把你的操作、操作的顺序和结果全部记录下来:当出现bug时你能查看之前更多的细节。
要知道,任何细节都可能是重要的:不要忽略不起眼或者不可楞的细节。
把事件关联到一起:尽量详细并量化的描述问题。
用于设计的审计跟踪在测试中也非常有用:Git、CVS、Subversion……
把事情记录下来:好记性不如烂笔头。

规则7:检查插头
置疑你的假设:是否运行了正确的代码?问题的根源可能没有想象的那么复杂。
从头开始:可能一开始就错了,以后怎么都不对了。
对工具进行测试:你的工具好用么?你会用么?(见规则1)

规则8:获得全新的观点
征求别人的意见:
获取专业知识:
听取别人的经验:
帮助无处不在:同事、供应商、网络、书店……
放下面子:
报告症状,而不要讲你的理论:不要把别人拖进你的思维定势中。
你提出的问题不必十分肯定:提出任何你觉得可以的因素,没准哪个就有帮助。

规则9:如果你不修复bug,它将依然存在
查证问题确实已被修复:不要假设bug已经修复了,你修改的地方可能不是造成bug的根本。
查证确实是你的修复措施解决了问题:撤销这个修复,看看bug是否再次出现。
要知道,bug从来不会自己消失:就算你再也找不到它了,它还是会在某一天跳出来,不要有侥幸心理。
从根本上解决问题:不要敷衍。
对过程进行修复:如果总是出现同类bug,检查最初的设计方案。

时间: 2024-10-14 23:05:31

调试九法-软硬件错误的排查之道的相关文章

《调试九法——软硬件错误的排查之道》【PDF】下载

<调试九法--软硬件错误的排查之道>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196352 内容简介 <调试九法:软硬件错误的排查之道>主要介绍了调试方面的9条黄金法则,并结合实际的环境讲述了如何合理地运用它们.<调试九法:软硬件错误的排查之道>的内容没有针对任何平台.任何语言或者任何工具,讲述的重点是找到出错的原因并修复它们,高效地追踪和解决不易察觉的软硬件问题. <调试九法:软硬件错误的排查之道>

书籍推荐《调试九法-软硬件错误的排查之道》

本文阅读时间3分钟 每个开发者都必须都的一项技术,-debug,最近读了一本关于调试的书分享给大家,书的内容不到200页,一口气读下来,估计需要一个小时,速度内容简单明了,主要是作者20多年的工作中调试经验的总结,作者作为一名软件开发人员的工作调试经验,同样适用其他领域开发人员,同时,解决问题的思路也适用于不同岗位的人思考借鉴,人人必备的调试技巧.全书分为三个主要部分:九种调试规则介绍,一个综合运用实例,总结陈词. 书中作者总结工作中两件重要的事情: 如果查找bug花费了大量时间,那么原因可能是

调试九法:软硬件错误的排查之道--读后总结

http://home.juedui100.com/user/23953994.htmlhttp://home.juedui100.com/user/24112283.htmlhttp://home.juedui100.com/user/23900208.htmlhttp://home.juedui100.com/user/23986474.htmlhttp://home.juedui100.com/user/24073652.htmlhttp://home.juedui100.com/user

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

调试九法概要思维导图 文字概要 理解系统 这是第一条股则,因为它是最重要的. 阅读手册.它会告诉你在使用除草机时,要在除草头上涂润滑油,这样除草绳就不会被烧化. 仔细阅读每一个细节.关于微处理器如何处理中断的详细信息就隐藏在数据手册的第37页. 掌握基础知识.点据本身就会发出很大的噪声. 了解工作流程.引擎的转速可能与轮胎的转速不同,这是由传动轴造成的. 了解工具.弄清楚体温计的哪一端才是用来测量体温的,弄清楚Glitch-O-Matic逻辑分析器的强大功能是如何使用的. 查阅细节.连爱因斯坦都

软硬件调试九法之总序

前言: 1.本文内容主要来源于书籍<调试九法:软硬件错误的排查之道>作者David J.Agans,属于读书笔记+个人体会. 2.本书介绍的方法的宗旨不是预防.保障和筛选,以预防bug的产生,而是如何找到bug并修复它们,如何高效的追踪和解决不易察觉的软硬件问题,不针对特定的平台.语言或者工具,不涉及晦涩的测试理论.3.你看过后,可能会咦一声,说“我一直都是这么做的!”,那么恭喜你,你是一个能高效解决问题的工程师. 书中提到了九条规则,可以说是总结的系统而全面,按照这些步骤和要求来做,对解决工

(知识分享)软硬件调试九法:第九条规则 如果你不修复一个bug,它将永远 存在

1.查证问题确已被修复 如果遵循了“制造失败”这条规则,就知道如何验证你确实修复了问题.无论问题和修复看起来多么明显,你都无法保证修复是有效的,直到做了测试并验证. 2.查证确实你的修复措施解决了问题 如果你取消这个修复,系统再次出现失败,再应用这个修复,问题消失,才能够证明你确实修复了问题.这样做的原因是,在调试期间,往往会改变一些不属于修复的地方,有时这些改变会隐藏问题,如果没有意识到这一点,发现测试起作用了,就高高兴兴的回家了,因为你做的修复和问题消失毫无关系,因此修复方案到达客户后,可能

荐书 : 调试九法 - 指路灯

文章概述 偶然的情况下在豆瓣上看到这本<调试九法>,心想一本142页的书居然评分达到9.0,索性也读下以便了解软件测试. 这本书引言部分说明这本书的魅力所在,也就6-7页,但不看也不会影响后面章节的阅读. 为什么会觉得这本书是指路灯,因为它通过例子提醒你可能已经知道但是忽略的方向. 告诉你,你为什么会出错. 这本书并没有告诉你专门详细的测试技术,更多地是告诉你怎么进行排错. 以下是章节小结内容, 理解系统 制造失败 不要想,而要看 分而治之 一次只改一个地方 保持审计跟踪 检查插头 获得全新观

(知识分享)软硬件调试九法:第八条规则 求助他人, 获得全新观点

1.征求别人意见 我们都是普通人,对任何事情都有偏见或者思维定式,包括对bug隐藏在哪里的看法,这些偏见会导致我们无法看清实际情况.其它人则从另一个角度看问题(可能也是他自己的偏见),但是会找到新的方法,对你解决问题有很大启发. 2.获取专业知识 有时系统的某个部分的知识看起来很神秘,我们不必到学校学习一年,而是通过咨询专家快速掌握那些知识,任何情况下,专家都会比我们更理解系统,因此他们能知道查找问题的大致线路图,为你的搜索工作提供很好的提示. 3.听取别人经验 你可能经验不足,但是你想周围的人

软硬件调试九法:第五条规则 一次只改一个地方

1.隔离关键元素 就像小学生物课,考察阳光对植物生长的影响,则需要保持养分.灌溉.生长温度等完全一致,一个有阳光照射,一个没有阳光照射,这样才能比较出阳光对植物的生产的影响.bug查找过程也要如此,在查找一个具有多个参数的函数的计算错误时,固定其它参数,同时修改一个参数的输入值,验证输出结果是否正确,从而可以确定是哪个参数导致的计算错误,确定bug. 2.一次只改一个测试 软件工程师有时为了修复一个问题而修改了一个地方,但这个修改没有解决问题,而他又认为这不会产生影响,这是一个错误的假设,这个改