调试,一项磨炼人的活(一)---《调试九法》
- 调试,一项磨炼人的活(一)—《调试九法》
- 调试九法
- 下载链接
调试,一项磨炼人的活(一)—《调试九法》
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
调试,一项磨炼人的活(一)---《调试九法》相关推荐
- 人不能活在舒适区里,我要趁年轻出去闯闯
"人不能活在舒适区里,我要趁年轻出去闯闯",散伙饭中同事终于说出了自己离职地真正原因. 领导也顺势表示:"人确实不能生活在舒适区里,所以各位在工作过程中,也要考虑有没有什 ...
- 35岁,领高薪,拿股票:那些职业竞争力强的人,活得太爽了!
点击"技术领导力"关注∆ 每天早上8:30推送 来源| 空白女侠(ID:kongbainvxia)空白女侠 前两天有一位小伙伴来问我,什么是职业竞争力?怎么才能知道自己的职业竞争 ...
- 有些人光是活着就已经是拼尽全力了
"很奇怪,我这两天只是考虑吃东西.我完全没什么盼望,我甚至都不想,我努力工作只是希望吃一顿好的.""就像一个只会把笔不断削短铅笔刨,只会削到剩下橡皮,却不会把笔削尖.&q ...
- 参与过上千亿项目的人,账单是何等的惊人?
又到年底了,各种年度账单蜂拥而至,我打开自己的支付宝年度账单,发现自己有幸成为参与过上千亿项目的人!大家也都开始拿它说事:账单式小康:我们每个人都壕过! 账单比年薪高? 请查收这份大型尴尬 有图有真相 ...
- 每个人都活在自己的精神世界中
以前也有过这种想法,不过今天更强烈些,想记下来. 每个人都是活在自己的精神世界中,只不过每个人的程度不同而已.有的人完全活在自己的精神世界中:有的人不但活在自己的精神世界,还同时活在与他人交互的物质世 ...
- 人只能活一次,千万别活得太累!
人只能活一次!这是常被人们遗忘的常识.既然只能活一次,就应该讲究点"活法".又何必活得太累,自己去折磨自己呢? 活的太累其实是心累.处境不佳用不着痛心疾首,人生又哪来的时时都一帆风 ...
- 人只能活一次,千万别活得太累
活的太累其实是心累.处境不佳用不着痛心疾首,人生又哪来的时时都一帆风顺?为上司一个不满意的眼色又何必五分钟缓不上气来,在未来的生活中,你有的是表现的机会,何况"铁打的衙门流水的官" ...
- 那些参加了影视剪辑项目的人,现在都怎么样了?
哈罗,您好我是你们亲爱的小龙老师!和大家说一个很劲爆的消息,我们腾然的影视剪辑项目从近日起,正式执行最新价格.也就是要往上调价了. 1.影视剪辑项目是什么? 这里我为了让大家更直观的了解到影视剪辑项目 ...
- [免费专栏] Android安全之动态调试APP的一些技巧「Android Studio调试」
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...
最新文章
- 一口气说出 4种 “附近的人” 实现方式,面试官笑了
- zblog如何调用HTML,Zblog调用栏目文章的方法
- 判断jQuery选择器结果为空 - CSDN博客
- python虚拟机直接加载字节码运行程序_第二章 python如何运行程序
- linux程序默认启动项,windows和linux双系统,设置默认启动项
- poj 1068 Parencodings (模拟)
- docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群
- 大神齐聚,算法大赛复赛晋级名单揭晓!
- 谷歌智能助理能同时听懂两种语言 超过同类产品
- python类的构造方法名称_Python的面向对象、Class 概念与使用
- Matlab实现圆孔夫琅和费衍射
- C语言实现SM4加解密
- Mac上的GIF制作软件推荐
- 在下载 chromium 源码时错误汇总
- 2009年 上海证券交易所新一代交易系统有多牛逼
- 一个机柜多少u?一个机柜可以放多少台服务器?
- 【预测模型】基于RLS算法求解数据预测matlab代码
- GitHub的使用方法
- PHP项目的发布(部署)
- MySQL8.0 物理克隆接口_技术实战 MySQL 8.0.17 克隆插件分享-爱可生
热门文章
- 即将一起变革的区块链项目xx network
- 操作系统的启动过程详解
- 1005: 燃烧多少卡路里(1级) 输入仅一行。两个整数,表示体重公斤数和公里数。输出仅一行,一个整数,表示燃烧卡路里数。
- 计算通过率逾期率并绘制通过率逾期率曲线
- [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决
- 互联网项目开发版本划分
- linux内核声卡管理,浅析linux 2.6.30.4内核中uda134x声卡驱动源码 - audio和bluetooth
- aes加密 java_Java中的微信支付(2):API V3 微信平台证书的获取与刷新
- Lawliet|C语言学习笔记5——循环结构
- 从Android studio 2.3.3 升级到 3.1.3最新版本 导入旧项目遇到的诸多错误,终极解决办法!!