具体描述
硬件缺陷和软件错误是“技术侦探”的劲敌,它们负隅顽抗,见缝插针。本书提出的九条简单实用的规则,适用于任何软件应用程序和硬件系统,可以帮助软硬件调试工程师检测任何bug,不管它们有多么狡猾和隐秘。
作者使用真实示例展示了如何应用简单有效的通用策略来排查各种各样的问题,例如芯片过热、由蛋酒引起的电路短路、触摸屏失真,等等。本书给出了真正能够隔离关键因素、运行测试序列和查找失败原因的技术。
无论你的系统或程序发生了设计错误、构建错误还是使用错误,本书都可以帮助你用正确的方法来思考,使bug自动暴露,进而一网打尽,斩草除根。
作者简介
David J. Agans
资深调试专家,善于解决一些最棘手的调试问题,涉及工业控制和监视系统、集成电路设计、掌上电脑、视频会议系统等。1976年毕业于麻省理工学院,现为SeaChange International工程总监。曾经营计算机系统咨询公司PointSource,任Zydacron公司副总裁,还曾就职于Gould、仙童和DEC等知名企业。
目录信息
1.1 本书如何教会你调试 1
1.2 这些规则都很显而易见 2
1.3 本书适用于任何人 3
1.4 本书可用于调试各种问题 3
1.5 本书的主旨不在预防、保证或筛选 4
1.6 调试不仅仅是故障检修 5
1.7 有关案例故事 6
1.8 精彩内容,即将上演 6
第2章 总体规则 8
第3章 理解系统 10
3.1 阅读手册 12
3.2 逐字逐句阅读整个手册 13
3.3 知道什么是正常的 15
3.4 知道工作流程 16
3.5 了解你的工具 17
3.6 查阅手册 18
3.7 小结 20
第4章 制造失败 21
4.1 制造失败 24
4.2 从头开始 24
4.3 引发失败 25
4.4 不要模拟失败 25
4.5 如何处理间歇性bug 27
4.6 如果做了所有尝试之后问题仍然间歇性发生 29
4.6.1 仔细观察失败 29
4.6.2 不要盲目相信统计数据 30
4.6.3 是已修复bug,还是仅仅由于运气好,它不再发生了 31
4.7 “那不可能发生” 33
4.8 永远不要丢掉调试工具 34
4.9 小结 36
第5章 不要想,而要看 37
5.1 观察失败 41
5.2 查看细节 43
5.3 问题忽隐忽现 46
5.4 对系统进行插装 46
5.4.1 设计插装工具 46
5.4.2 过后构建插装 48
5.4.3 不要害怕深入研究 50
5.4.4 添加外部插装 51
5.4.5 日常生活中的插装 51
5.5 海森堡测不准原理 52
5.6 猜测只是为了确定搜索的重点目标 53
5.7 小结 54
第6章 分而治之 55
6.1 缩小搜索范围 59
6.1.1 确定范围 60
6.1.2 你在哪一侧 61
6.2 插入易于识别的模式 62
6.3 从有问题的支路开始查找问题 63
6.4 修复已知bug 64
6.5 首先消除噪声干扰 65
6.6 小结 66
第7章 一次只改一个地方 67
7.1 使用步枪,而不要用散弹枪 69
7.2 用双手抓住黄铜杆 71
7.3 一次只改变一个测试 72
7.4 与正常系统进行比较 73
7.5 自从上一次能够正常工作以来你更改了什么 74
7.6 小结 77
第8章 保持审计跟踪 78
8.1 记下你的每步操作、顺序和结果 80
8.2 魔鬼隐藏在细节中 81
8.3 关联 83
8.4 用于设计的审计跟踪在测试中也非常有用 84
8.5 好记性不如烂笔头 84
8.6 小结 85
第9章 检查插头 86
9.1 怀疑自己的假设 88
9.2 从头开始检查 89
9.3 对工具进行测试 90
9.4 小结 92
第10章 获得全新观点 93
10.1 寻求帮助 94
10.1.1 获得全新观点 94
10.1.2 询问专家 94
10.1.3 借鉴别人的经验 95
10.2 到哪里寻求帮助 96
10.3 放下面子 97
10.4 报告症状,而不是理论 98
10.5 小结 99
第11章 如果你不修复bug,
它将依然存在 101
11.1 检查问题确实已被修复 103
11.2 检查确实是修复措施解决了问题 103
11.3 bug从来不会自己消失 104
11.4 从根本上解决问题 105
11.5 对过程进行修复 107
11.6 小结 107
第12章 通过一个案例讲述所有规则 109
第13章 牛刀小试 113
13.1 灯和吸尘器的故事 113
13.2 大量出现的bug 115
13.3 宽松的限制 119
13.4 识破bug 123
第14章 从帮助台得到的观点 128
14.1 帮助台的限制 130
14.2 规则,帮助台风格 130
14.2.1 理解系统 131
14.2.2 制造失败 132
14.2.3 不要想,而要看 132
14.2.4 分而治之 134
14.2.5 一次只改一个地方 134
14.2.6 保持审计跟踪 135
14.2.7 检查插头 136
14.2.8 获得全新观点 136
14.2.9 如果你不修复bug,它将依然存在 137
14.3 小结 137
第15章 结束语 139
15.1 调试规则网站 139
15.2 如果你是一名工程师 139
15.3 如果你是一名经理 140
15.4 如果你是一名教师 141
15.5 小结 141
· · · · · · (收起)
读后感
书里面讲的案例都很有共鸣,其实调试方法软硬件是通用的. 就拿我一直在用的windows 10 insider Preview 来说吧. 我明知道这是一个埋伏着各种bug的系统, 但仍然是用的乐此不疲. windows 新系统现每个月至少更新一次, 频繁的时候三五天就更新一版(MIUI开发版也差不多, 正常情况下,...
理解系统 掌握基础知识:必须掌握系统的工作原理以及它是如何设计的。在某些情况下,还要知道为什么这样设计。如果你没有理解系统中的某个部分,那么这通常就是出问题的地方。 阅读手册:我们应该首先阅读手册,而不是等到所有办法都不管用之后才去读它。而且要逐字阅读整个手...
书里面讲的案例都很有共鸣,其实调试方法软硬件是通用的. 就拿我一直在用的windows 10 insider Preview 来说吧. 我明知道这是一个埋伏着各种bug的系统, 但仍然是用的乐此不疲. windows 新系统现每个月至少更新一次, 频繁的时候三五天就更新一版(MIUI开发版也差不多, 正常情况下,...
五星!力荐!! 对于一本被冷落的经典,我觉得这还是远远不够的!我很希望能有更多的人了解这本书,从而从中学到一些东西。 说实话,看到豆瓣里这本书"2人读过,2人想读"的统计结果,我感到十分的诧异。在我看来,这绝对是一本软件调试领域的经典作品,相信很多人都读过《设计...
五星!力荐!! 对于一本被冷落的经典,我觉得这还是远远不够的!我很希望能有更多的人了解这本书,从而从中学到一些东西。 说实话,看到豆瓣里这本书"2人读过,2人想读"的统计结果,我感到十分的诧异。在我看来,这绝对是一本软件调试领域的经典作品,相信很多人都读过《设计...
用户评价
“调试九法”,这个书名本身就带着一股子“大道至简”的意味。对于我这种常年跟代码打交道的“码农”来说,调试简直就是家常便饭,但同时也是最令人头疼的环节之一。有时候,一个看似微小的错误,就能耗费我们无数的时间和精力,让人备受打击。因此,当我看到这本书时,心里涌起一股强烈的探求欲。我猜想,这“九法”并非简单的技术堆砌,而更像是一种哲学,或者说是一种“心法”,是作者将自己多年来在调试领域的深刻洞察和实践经验,提炼出来的精华。我希望它能教会我如何不被表面的现象所迷惑,如何透过代码的表象,直击问题的本质。我希望它能够提供一些全新的视角,让我能够以一种更加宏观、更加系统的方式去理解和解决bug,而不是仅仅停留在“点对点”的修补。我甚至期待,这本书能够改变我对“错误”的认知,将每一次的bug都视为一次学习和成长的机会。总而言之,我希望这本书能够给我带来一场“调试思维”的革命,让我能够以一种更加从容、更加自信的态度,迎接每一次代码挑战。
这本书的名字让我瞬间被吸引住了,"调试九法"——听起来就有一种神秘而实用的力量。我一直以来在编程的道路上摸爬滚打,深知调试如同大海捞针,每一次错误都像是在黑暗中摸索,耗费心力却往往不得要领。因此,当我看到这本书时,心中涌现出强烈的期待,仿佛看到了指引迷途的灯塔。我猜想,这"九法"定是作者多年经验凝练而成的精华,是对无数次失败尝试的总结,是对那些晦涩难懂的bug的克星。我迫不及待地想知道,这九种方法是否能像魔法咒语一样,迅速驱散我编程生涯中的阴霾。我希望它能教会我更系统、更高效的调试思路,而不是零散的技巧堆砌。我期盼这本书能够帮助我摆脱那种“改一点,测一下,又出错”的循环,能够让我以一种更加从容、自信的姿态去面对代码中的每一个挑战。也许,它会揭示一些我从未想过的调试角度,让我对bug的本质有更深刻的理解。我甚至幻想,读完这本书,我能够成为团队里那个“bug终结者”,用最快的速度找到问题的根源,让代码重获新生。总之,我对这本书寄予了厚望,希望能它能为我的编程之路增添一笔浓墨重彩的助力。
说实话,我拿到这本书的时候,内心是有些忐忑的。毕竟“调试”这个词,本身就带有一点令人头疼的意味。你懂的,那种面对一堆错综复杂的代码,感觉所有地方都可能藏着问题,却又不知道从何下手的感觉,简直让人抓狂。所以,当"调试九法"这个书名映入眼帘,我既好奇又有点怕被“吓到”。我脑海里浮现的是一本厚重的、充满专业术语的工具书,那种需要反复查阅,才能勉强理解其中奥义的书。我担心它会不会过于理论化,脱离实际应用,或者充斥着那些我听都没听过的专业名词,让我更加云里雾里。我更希望这本书能够像一个经验丰富的老师傅,用通俗易懂的语言,结合生动具体的案例,一步步地引导我,教会我如何像侦探一样,抽丝剥茧地找出问题的所在。我希望它能提供一些实操性极强的技巧,比如如何有效地利用IDE的调试工具,如何设计巧妙的测试用例来定位问题,又或者是在压力之下如何保持冷静,不被bug打败。我非常希望它能给我一些“醍醐灌顶”的启示,让我明白调试的艺术,而不仅仅是机械地执行某些步骤。
这本《调试九法》光听名字就足够吸引眼球了,特别是对于我们这种整天和代码打交道的人来说,调试几乎是我们工作中绕不开的坎。每次遇到棘手的bug,那种抓心挠肺的感觉,简直比写出bug本身还要折磨人。我一直觉得,优秀的程序员不仅仅在于能写出精巧的代码,更在于能快速有效地解决代码中的问题。所以,当我知道有这样一本专门讲调试的书时,我立刻就心动了。我猜测这本书的作者肯定是个经验老道的开发者,他一定将自己在无数个不眠之夜中摸索出来的宝贵经验,浓缩成了这“九大法门”。我希望它不是那种泛泛而谈的理论,而是能够给出切实可行、直接上手就能用的方法。我希望它能让我明白,为什么很多时候我们感觉自己“在随机尝试”,而这本书能够提供一个更有条理、更科学的框架,让我们能够更有针对性地去查找问题。也许,它会教我如何更好地理解错误信息,如何利用日志分析,甚至是如何从代码结构本身去预判和规避bug。总之,我非常期待这本书能够成为我的“秘密武器”,让我在调试的战场上,能够更加从容自信,事半功倍。
这本书的名字,"调试九法",听起来就很有一种“秘籍”的感觉。在编程的世界里,调试绝对是一门玄学,有时候你觉得一个bug明明很简单,但就是怎么也找不到源头,急得你团团转。我一直认为,能够高效调试的人,才是真正的大牛。所以,当我看到这本书时,我的第一反应就是:“我需要它!” 我猜想,这"九法"一定包含了作者在实战中总结出来的,一套非常系统、非常实用的调试流程或者方法论。我希望它不是简单地列举一些调试工具的使用方法,而是能够深入到调试的思维方式和策略层面。比如,它可能会教我如何去“思考”bug,如何从不同的角度去审视代码,如何更有效地利用各种信息来缩小问题的范围。我渴望找到一些能够帮助我“跳出思维定势”的方法,不再陷入那种“大海捞针”的困境。我甚至希望,读完这本书,我能够对bug产生一种“预判”能力,在代码还没写完的时候,就能想到可能出现的问题,并且提前做好预防。总之,我希望这本书能够让我彻底告别那种“靠运气”来解决bug的日子,真正掌握调试的艺术。
这些规则总结的非常到位!
调试也是一门技艺
看的有点晚了. 书中大部分方法都在其他书中(特别是测试相关的)看到过了. 并且书中大部分都是硬件相关的. 总的来说还是值得一读吧, 因为并不厚 :-)
适用于硬件调试,软件调试,也适用于家庭,生活中出现的各种故障排除,水电维修,道理很简单,但等总结出来不易,遇到问题,思路非常重要
快速翻过,属于那种“纲领”性质的调试方法说教,感觉对于写程序不是太多直接的帮助