zoukankan      html  css  js  c++  java
  • 调试九法:软硬件错误的排查之道-读后总结

    这本书是在来到上海后买的,当时是面试完后回来按照惯例刷每日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]

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/yetuweiba/p/4475110.html
Copyright © 2011-2022 走看看