这本书是在来到上海后买的,当时是面试完后回来按照惯例刷每日kindle优惠电子书,看到kindle电子书有推荐相关的书----软件调试的艺术,看到相关的评论对此书的评价不高,就顺便搜索了一下相似的书籍,就找到了这本书----调试九法:软硬件错误的排查之道,这本书在买的电子书中,价格算是比较高的,但是是非常物超所值的。记得小道消息的Fenng在文章中说的很有道理,大致意思是这样:如果一本书里面有内容对你有用,那么就是一本很好的书,几十块的价格能买到对你有用的道理,是非常划算的。所以,如果面对一本书,如果是价格因素让你迟疑的话,那就买下吧。
扯了那么多没用的,该切到主题了,那就是对这本的读后总结了。一本书,做做读书总结,会让你记忆更深刻。
本人是一名软件(cheng)工(xu)程(yuan)师,所以总结的视角主要是软件相关的角度。
这本书主要内容是对找出软硬件中bug方法的总结,作者分了九条,分别是:
1.理解系统 2.制造失败 3.不要想,而要看
4.分而治之 5.一次只改一个地方 6.保持审计跟踪
7.检查插头 7.获得全新观点 9.如果不修复bug,bug不会消失
大家可以在 这里下载作者所做的海报,可以打印下来贴在工位旁边来辅助记忆。
书在开始的时候,首先说明,在调试开始的时候,首先需要做的是:
了解系统,即得先知道系统的逻辑,了解什么是对的---这样的话,就会知道什么是错的了。同时知道如何获取手册(资料),还需要了解调试所需要的工具--工欲善其事,必先利其器。
做好准备工作后,就开始和bug决斗了----在bug和你之间,只有一个胜利者。
如果你有调试bug的经历,首先想到的八成是重现bug,这样做的好处有:
- 可以直观地观察bug,这样就可以对bug有个直观的认识。
- 可以专心地查找原因,因为知道如何复现bug的时候,只需要对某些个特定的场景进行关注即可。
- 判断bug是否被修复,如果进行修复后,再执行复现bug操作,如果失败率为0,则说明bug已经被修复。
以上是重现bug的好处,但是,在重现bug的时候,需要注意:不要模拟失败,其含义是:模拟失败发生的条件(网络在高流量下发生错误,那就制造高流量的场景让错误重现),不要试图模拟失败本身。因为在不清楚bug原因的时候,在机理上进行模拟,会很容易走弯路的。
在调试中间,如果有想法,要进行验证,我们是工程师,要拿事实说话。有想法的话,不要怕搭建场景的麻烦(中枪-_-||)。调试中间,我们可以在系统中写一些代码来辅助调试(要机器,不要人),如果需要写辅助的小工具的话,要保存下来,方便以后验证。在写辅助代码的时候,需要注意不对原先的逻辑产生影响。
在实际应用中,大家可能对这个很熟悉--分而治之,如果面对的系统比较大,那么就需要进行分割,来确定问题到底出现在哪一点,我们可以根据系统的业务逻辑,来进行每个模块的验证,这样就可以确定问题到底出在哪个模块了。
到这里,大家应该是找到出错的地方了,这个时候就开始动手了,在进行修复的时候,很重要的一点就是一次只修改一个地方,到这里请默念三遍,因为重要的事情要所三遍。如果一个bug可能与多个原因有关,我们一次改两个,结果正常了,那么到底是哪个原因呢?所以在进行更改的时候,一次只改一个,如果不是这个原因,那么恢复后再进行下个原因的测试。
在记录bug的时候,一定把进行的操作,操作的顺序和结果都记录下来,这样可以形成记录,有助于我们进行bug原因的分析,同时注意,记录要尽可能详细,因为在不知道bug产生原因的时候,一些毫不起眼的小细节可能就是罪魁祸首。书中举了一个花格子衬衫引起的bug的例子,大家可以去看一下。
当我们试过各种方法后,仍然毫无头绪的时候,可能就需要检查一下电源插头了,在很多时候,也可能使我们先入为主的假设影响了我们,在这个时候,就需要我们来进行一些怀疑了,例如:是否运行正确的代码?是否进行正确的初始化?使用的工具是否有错误?
在调试方法中,有一种很有趣的方法---小黄鸭调试法,具体执行过程很简单,即向一个人讲解这个问题,这对我们思路的整理很有用处。也可以向专家寻求帮助,放下所谓的自尊,把问题解决才是根本的目标。
如果你只是寻求一些临时的方法来解决问题,那么问题仍然存在,例如系统在流量过大会产生错误,你限制流量,问题就消失了,这并不是解决问题,而是掩盖问题了,所以,在权宜之计后,还是需要找出问题的原因。
以上就是看这本书的总结。推荐各位有时间看下。
[4/30]