1、查证问题确已被修复

  如果遵循了“制造失败”这条规则,就知道如何验证你确实修复了问题。无论问题和修复看起来多么明显,你都无法保证修复是有效的,直到做了测试并验证。

2、查证确实你的修复措施解决了问题

  如果你取消这个修复,系统再次出现失败,再应用这个修复,问题消失,才能够证明你确实修复了问题。这样做的原因是,在调试期间,往往会改变一些不属于修复的地方,有时这些改变会隐藏问题,如果没有意识到这一点,发现测试起作用了,就高高兴兴的回家了,因为你做的修复和问题消失毫无关系,因此修复方案到达客户后,可能再次失败甚至更糟! 但是这个也有例外,比如已经坏掉的硬件不需要再装回去验证。就像心脏手术中不需要把原来的心脏再装回去验证一样。

3、要知道,bug不会自动消失

  如果你不修复bug,它不会自动修复,也许看起来不再发生了,但是它仍会发生。 比如随机出现的bug,如果凭猜测修改了很多地方,或许碰巧修车成功了,或许只是把它隐藏起来了,但你并不知道怎么解决的,下次发生时,你还是毫无头绪。

  如果基于发布,没有时间追踪随机bug,也可以在发布的系统中进行插桩,当故障发生时,可以捕获一些信息,如果问题不发生,也不会有任何影响。这样做的一个好处是,及时你无法利用这些信息来修复问题,起码让客户知道你认真跟踪了问题,通过对客户反馈的信息进行感谢,比向客户说我们从未遇到这个问题要好。

4、从根本解决问题

  如果一个硬件损坏了,不要简单更换了事,如果其在某种情况下会损坏,这样只会给你换来一点时间,新的零件还是会损坏。 比如,电路板上的电容耐压值5V,但是你的系统峰值电压偶尔会达到8V,那么简单更换电容后,它仍然会损坏,必须找到器件损坏的原因,才能从根本解决,比如更换耐压值为16V的电容。

5、对过程进行修复

  有时修复系统和修复过程很难区分,有时bug隐藏在设计的过程中,而不是产品中,这个方面涉及到了设置质量的问题。 比如一家生产车间的地板上有油滴,如果简单的擦拭掉,过几天还会出现,查找原因后才发现,公司的产品使用两个螺钉固定,当受到剧烈震动后,螺钉会松动导致漏油,因此必须修改设计,以确保产品在需求、设计和验证正确考虑震动。

总结

  • 要合理利用版本控制和管理工具
  • 要有调试测试记录文档和bug记录系统,便于备份、总结和查找。
  • 要勤于学习,持开放心态,积极面对问题。
  • 要遵循前面的九条规则,遇到问题不要慌乱,不要主观臆断问题根源,不要随意改动,以免导致更加严重的后果

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

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

    <调试九法--软硬件错误的排查之道>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196352 内容简介 <调试九法:软硬件错 ...

  2. 调试九法: 软硬件错误的排查之道 (David J. Agans 著)

    第1章 简介 (已看) 第2章 总体规则 (已看) 第3章 理解系统 (已看) 第4章 制造失败 第5章 不要想, 而要看 第6章 分而治之 第7章 一次只改一个地方 第8章 保持审计跟踪 第9章 检 ...

  3. 分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享

    分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享 全文转载zhao jun 博士的新浪博客,版权为zhaojun博士所有 原文地址:http://blog.sin ...

  4. Kafka 基本知识分享

    目录 一.基本术语 二.Kafka 基本命令 三.易混淆概念 四.Kafka的特性 五.Kafka的使用场景 六.Kakfa 的设计思想 七.Kafka 配置文件设置 八.新消费者 九.Kafka该怎 ...

  5. GO基础知识分享

    目录 GO基础知识分享 go语言的基本事项 关键字 字符串的拼接和变量的定义方式 空白符 const常量 iota的用法 运算符 Go 没有三目运算符,不能适用?: 语言条件语句 for循环的方式 函 ...

  6. 使用javascript开发的视差滚动效果的云彩 极客标签 - 做最棒的极客知识分享平台

    www.gbtags.com 使用javascript开发的视差滚动效果的云彩 阅读全文:使用javascript开发的视差滚动效果的云彩 极客标签 - 做最棒的极客知识分享平台

  7. 学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难

    作者:潘安仁链接:https://www.zhihu.com/question/40720890/answer/87926792来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. MemoryStream相关知识分享

    一.简单介绍一下MemoryStream MemoryStream是内存流,为系统内存提供读写操作,由于MemoryStream是通过无符号字节数组组成的,可以说MemoryStream的性能可以算比 ...

  9. 制作一个简单的部门员工知识分享的python抽取脚本

    需求: 基于公司的文化和公司部门间以及员工之间的工作需求状态,或者想要了解某一些技能.专业方面的知识需求.促进并提高员工们的技能认知和技术水平. 详细代码如下: 先说一下存入csv表格的表头字段: 1 ...

随机推荐

  1. Day14 summary

    Since I am writing blog in Ubuntu which has not installed Chinese language package, this blog will b ...

  2. SQL Analysis Services MDX 查询超时 解决办法

    当页面有很多MDX语句查询的时候,会发生超时的情况. 解决办法: SQL Analysis Services所在的服务器(OLAP的文件夹下) 找到: msmdpump.ini 将: <Conf ...

  3. Startup key combinations for Intel-based Macs

    Learn about the startup key combinations you can use with Intel-based Macs. You can use the followin ...

  4. Linux多人群聊系统(简单多线程服务器)

    一:要求 1.通过一个服务器实现最多5个客户之间的信息群发. 2.服务器显示客户的登录与退出: 3.客户连接后首先发送客户名称,之后发送群聊信息: 4.客户输入bye代表退出,在线客户能显示其他客户的 ...

  5. 标准库中的-stack

    #include <sequence_concepts.h> __STL_BEGIN_NAMESPACE // Forward declarations of operators == a ...

  6. pyhton 27 pip命令无法使用 没有Scripts文件夹 的解决方法

    1 安装了setuptools http://jingyan.baidu.com/article/fb48e8be52f3166e622e1400.html 2 用ez_setup.py安装了setu ...

  7. WOJ -1204

    WOJ -1204 1 出现次数大于一半 那么就利用普通的堆栈的思想,如果删除两个不同的元素,原来的多数元素还是多数元素,所以采取按条件入栈的方法,如果和top元素相同则入栈,否则top--,此元素也 ...

  8. Oracle、MySql、SQLServer 数据分页查询

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  9. 转--webservice、socket、http 小记(一)

    webservice.socket.http 小记(一) http://blog.csdn.net/m_123hj_520/article/details/9370723 2013-07-18 17: ...

  10. linux库列表

    SDL库 curses openssl zlib library curl library GNU Readline library