• 调试,一项磨炼人的活(一)—《调试九法》

    • 调试九法
    • 下载链接

调试,一项磨炼人的活(一)—《调试九法》

2017年的年末,领导让我做Android平台上,Linux内核的相关的工作。系统极不稳定,涉及大量调试,且每次修改完成代码,都得重新安装ko,重启手机。复杂的代码如同走迷宫一样,让我陷入其中无法出来。每次编译运行步骤繁复又让人痛苦不堪。于是很想知道别人是如何调试一个程序的。就找到了这本《调试九法》。

写程序,什么时候最痛苦?
肯定不是设计的时候,设计的时候有着指点江山豪情。
肯定不是编码的时候,编码的时候充满了创造的兴奋。
也不是测试的时候,测试的时候有着第一次牵恋人的手一般紧张和甜蜜,还有一些收获的喜悦。

那么什么时候最痛苦呢?
最痛苦的就是,程序出问题,需要调试的时候。
如果只是把出错信息放到网上一搜,就找到解决方案的,还不是什么大问题。
问题是那些你的系统独有的,潜伏很久的错误,那你就要做好千里独行的准备了。
这是一段无人走过的路,这是一段布满荆棘的路,没有地图,没有方向,你要凭借少量的线索在黑暗中摸索,像侦探破案一样反复假设,反复尝试,最终找到真相。

好了,下面切入正题,讲《调试九法》这本书。

调试九法

这本书的英文名是《Debugging》还有一个副标题是:
The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
即,九个不可或缺的法则用来找到最难捉摸的软硬件问题。

所以,书名其实翻译的有些问题。9 rules不应该翻译成“九法”,而应该翻译成“九法则”,因为书中并没有讲到具体的方法,只是讲了一些需要遵循的大的法则。
这里的每个法则都不是独立的,而是在某些时候必须合在一起使用的。就像全力做一件事时,有时候不仅要用手,还要用眼睛和耳朵一样。

这本书总共讲了调试时,需要遵循的九项法则。

  • 规则1:理解系统;
  • 规则2:制造失败;
  • 规则3:不要想,而要看;
  • 规则4:分而治之;
  • 规则5:一次只改一个地方;
  • 规则6:保持审计跟踪;
  • 规则7:检查插头;
  • 规则8:获得全新观点;
  • 规则9:如果你不修复bug,它将依然存在

对我触动最深的是,规则3:不要想,而要看。这真是一条至理名言。我总结成一句话,就是:十个猜想,不如一个验证;十个验证,不如一个观测。调试时,不缺少猜想,而缺少验证,更缺少观测。

其次是,理解系统和获得全新的观点。这两条用孔圣人的话总结,就是“敏而好学,不耻下问”。勤学好问,总是好的。理解系统,相当于勤学;获得全新的观点,相当于好问。

其余的,也很不错,都可以看看,会给你很多启发。

下载链接

这个版本为在kindle上显示,专门做了优化。去除了上面和下面的边框,使横屏显示,两屏刚好显示一页。欢迎使用
https://download.csdn.net/download/quietwave/10569723

调试,一项磨炼人的活(一)---《调试九法》相关推荐

  1. 人不能活在舒适区里,我要趁年轻出去闯闯

    "人不能活在舒适区里,我要趁年轻出去闯闯",散伙饭中同事终于说出了自己离职地真正原因. 领导也顺势表示:"人确实不能生活在舒适区里,所以各位在工作过程中,也要考虑有没有什 ...

  2. 35岁,领高薪,拿股票:那些职业竞争力强的人,活得太爽了!

    点击"技术领导力"关注∆  每天早上8:30推送 来源| 空白女侠(ID:kongbainvxia)空白女侠 前两天有一位小伙伴来问我,什么是职业竞争力?怎么才能知道自己的职业竞争 ...

  3. 有些人光是活着就已经是拼尽全力了

    "很奇怪,我这两天只是考虑吃东西.我完全没什么盼望,我甚至都不想,我努力工作只是希望吃一顿好的.""就像一个只会把笔不断削短铅笔刨,只会削到剩下橡皮,却不会把笔削尖.&q ...

  4. 参与过上千亿项目的人,账单是何等的惊人?

    又到年底了,各种年度账单蜂拥而至,我打开自己的支付宝年度账单,发现自己有幸成为参与过上千亿项目的人!大家也都开始拿它说事:账单式小康:我们每个人都壕过! 账单比年薪高? 请查收这份大型尴尬 有图有真相 ...

  5. 每个人都活在自己的精神世界中

    以前也有过这种想法,不过今天更强烈些,想记下来. 每个人都是活在自己的精神世界中,只不过每个人的程度不同而已.有的人完全活在自己的精神世界中:有的人不但活在自己的精神世界,还同时活在与他人交互的物质世 ...

  6. 人只能活一次,千万别活得太累!

    人只能活一次!这是常被人们遗忘的常识.既然只能活一次,就应该讲究点"活法".又何必活得太累,自己去折磨自己呢? 活的太累其实是心累.处境不佳用不着痛心疾首,人生又哪来的时时都一帆风 ...

  7. 人只能活一次,千万别活得太累

    活的太累其实是心累.处境不佳用不着痛心疾首,人生又哪来的时时都一帆风顺?为上司一个不满意的眼色又何必五分钟缓不上气来,在未来的生活中,你有的是表现的机会,何况"铁打的衙门流水的官" ...

  8. 那些参加了影视剪辑项目的人,现在都怎么样了?

    哈罗,您好我是你们亲爱的小龙老师!和大家说一个很劲爆的消息,我们腾然的影视剪辑项目从近日起,正式执行最新价格.也就是要往上调价了. 1.影视剪辑项目是什么? 这里我为了让大家更直观的了解到影视剪辑项目 ...

  9. [免费专栏] Android安全之动态调试APP的一些技巧「Android Studio调试」

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

最新文章

  1. 一口气说出 4种 “附近的人” 实现方式,面试官笑了
  2. zblog如何调用HTML,Zblog调用栏目文章的方法
  3. 判断jQuery选择器结果为空 - CSDN博客
  4. python虚拟机直接加载字节码运行程序_第二章 python如何运行程序
  5. linux程序默认启动项,windows和linux双系统,设置默认启动项
  6. poj 1068 Parencodings (模拟)
  7. docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群
  8. 大神齐聚,算法大赛复赛晋级名单揭晓!
  9. 谷歌智能助理能同时听懂两种语言 超过同类产品
  10. python类的构造方法名称_Python的面向对象、Class 概念与使用
  11. Matlab实现圆孔夫琅和费衍射
  12. C语言实现SM4加解密
  13. Mac上的GIF制作软件推荐
  14. 在下载 chromium 源码时错误汇总
  15. 2009年 上海证券交易所新一代交易系统有多牛逼
  16. 一个机柜多少u?一个机柜可以放多少台服务器?
  17. 【预测模型】基于RLS算法求解数据预测matlab代码
  18. GitHub的使用方法
  19. PHP项目的发布(部署)
  20. MySQL8.0 物理克隆接口_技术实战 MySQL 8.0.17 克隆插件分享-爱可生

热门文章

  1. 即将一起变革的区块链项目xx network
  2. 操作系统的启动过程详解
  3. 1005: 燃烧多少卡路里(1级) 输入仅一行。两个整数,表示体重公斤数和公里数。输出仅一行,一个整数,表示燃烧卡路里数。
  4. 计算通过率逾期率并绘制通过率逾期率曲线
  5. [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决
  6. 互联网项目开发版本划分
  7. linux内核声卡管理,浅析linux 2.6.30.4内核中uda134x声卡驱动源码 - audio和bluetooth
  8. aes加密 java_Java中的微信支付(2):API V3 微信平台证书的获取与刷新
  9. Lawliet|C语言学习笔记5——循环结构
  10. 从Android studio 2.3.3 升级到 3.1.3最新版本 导入旧项目遇到的诸多错误,终极解决办法!!