出版社:机械工业出版社
年代:2014
定价:69.0
本书揭示了调试和优化遗留代码的艺术。本书共分7章。第1章介绍用于构建易于修改和调试的软件的相关技术。第2章介绍如何按步骤来定位和消除软件bug。第3章提供理解问题以及程序的有用方法。第4章讲述调试器在计算机内部的工作原理。第5章阐述减少应用程序内存使用量的相关技术。第6章介绍确定哪些程序浪费处理器周期的许多方法,并提供解决方案。第7章结合社会和环境因素给出一些宝贵的建议。
译者序
前言
第1章预防药1
1.1核心问题2
1.1.1上市时间的压力2
1.1.2不确定的规格说明4
1.1.3以功能特性换时间5
1.1.4写下来5
1.1.5复杂性8
1.2防御性编程9
1.2.1内聚和耦合9
1.2.2错误输入检查12
1.2.3数据范围18
1.2.4日志20
1.2.5文档28
1.2.6为改变而设计31
1.2.7增量精炼33
1.3单元测试34
1.3.1自动化测试的动机35
1.3.2实现框架的步骤36
1.3.3框架扩展43
1.4工具的配置46
1.4.1使用编译器警告46
1.4.2发行版本的设置47
1.5机器相关性48
1.5.1字节序49
1.5.2内存对齐50
1.5.3数据类型大小51
1.5.4虚拟机的好处52
1.6小结53
1.6.1底线:为什么出现bug54
1.6.2改进清单:bug主动预防54
第2章调试技巧55
2.1初始步骤56
2.1.1复现问题56
2.1.2无法复现的问题56
2.1.3验证bug是真实存在的59
2.2消除缺陷:快速修复60
2.2.1检查近期改动60
2.2.2使用跟踪信息61
2.2.3似曾相识61
2.2.4明确何时放弃61
2.3消除缺陷:科学方法论62
2.3.1一般步骤62
2.3.2定位问题:增量集成法63
2.3.3定位问题:二分法64
2.3.4理解问题64
2.3.5防范失误65
2.3.6诊断工具67
2.3.7基础调试操作75
2.4保留记录80
2.4.1个人记录80
2.4.2协同开发下的记录81
2.5小结84
第3章理解问题86
3.1知识是如何丢失的87
3.1.1竞争87
3.1.2人员流失89
3.1.3升职90
3.2难懂的代码91
3.2.1设计问题91
3.2.2混淆95
3.2.3误导性的代码104
3.3反向工程105
3.3.1通用策略105
3.3.2对策111
3.3.3建立知识库116
3.4小结118
第4章调试器内部机制119
4.1调试器的种类119
4.1.1机器调试器与符号调试器119
4.1.2调试基础:自定义构建125
4.1.3调试基础:系统调用136
4.1.4调试基础:解释器151
4.1.5内核调试器155
4.1.6界面:命令行与图形用户界面157
4.2符号调试器扩展157
4.2.1动态断点157
4.2.2单步执行158
4.3应对策略159
4.3.1系统调用159
4.3.2移除调试信息160
4.3.3代码盐161
4.3.4混合内存模型162
4.4小结163
第5章优化:内存占用165
5.1被遗忘的历史167
5.2程序的内存布局168
5.2.1场景:单段程序169
5.2.2场景:仅代码段和数据段170
5.2.3场景:所有4种段类型171
5.3代码段172
5.3.1剪切粘贴式编程172
5.3.2宏175
5.3.3僵尸代码177
5.4数据段177
5.4.1双重用途的数据结构178
5.4.2位域180
5.4.3压缩算法181
5.5栈183
5.5.1活动记录184
5.5.2函数参数188
5.5.3局部变量190
5.6堆191
5.6.1内存池192
5.6.2回收196
5.6.3延迟实例化197
5.6.4跟踪内存使用情况199
5.7小结201
第6章优化:CPU周期202
6.1程序控制跳转203
6.1.1标签与GOTO203
6.1.2函数参数205
6.1.3带可变参数的函数206
6.1.4系统调用207
6.1.5递归210
6.2程序控制分支211
6.2.1查找表211
6.2.2switch与if-else213
6.2.3常见情况放在前,罕见情况放在后215
6.3程序控制循环215
6.3.1循环不变量216
6.3.2函数调用217
6.3.3数组引用219
6.3.4分解复合布尔表达式220
6.3.5循环展开221
6.3.6循环干涉221
6.3.7提取程序分支语句221
6.4内存管理222
6.4.1处理开销223
6.4.2引用局部性226
6.5输入∕输出227
6.5.1缓存228
6.5.2缓冲229
6.5.3先进的技术230
6.6异常231
6.6.1动态注册模型234
6.6.2静态表模型235
6.6.3处理开销235
6.6.4滥用异常237
6.7昂贵的操作237
6.7.1消除常见的子表达式237
6.7.2浮点运算神话237
6.7.3强度折减239
6.7.4同步240
6.7.5简写操作符的神话243
6.8快速修复243
6.8.1更好的硬件243
6.8.2约束问题244
6.8.3编译器设置244
6.9小结245
6.10信息汇总246
第7章最后的赠言247
7.1对于源代码完整性的其他威胁248
7.1.1时髦技术:一个案例研究248
7.1.2洗脑101249
7.1.3真正的问题249
7.2保持书面记录250
7.2.1悄悄记录250
7.2.2隐私的神话250
7.3历史总是重演251
Amazon五星级畅销书,遗留代码调试和优化领域的代表性著作,资深专家10余年经验结晶,长销不衰 不仅从实用性角度深入、系统地讲解了调试和优化遗留代码的方法、技术和最佳实践,而且从源头上告知读者如何避免掉进维护遗留代码的泥潭本书是遗留代码调试和优化领域的代表性著作,是作者10多年来在软件bug中“驱魔”经验的结晶,Amazon五星评论。不仅从实用性角度深入、系统地讲解了调试和优化遗留代码的方法、技术和最佳实践,而且从源头上阐述如何避免掉进维护遗留代码的泥潭,编写出易于维护,甚至不需要维护的高质量代码。本书共分7章:第1章介绍用于构建易于修改和调试的软件的相关技术;第2章讲解如何定位和消除软件bug;第3章提供理解问题以及程序的有用方法;第4章讲述调试器在计算机内部的工作原理;第5章深入探讨优化内存的相关技术和方法;第6章则探讨如何从CPU运行效率的角度优化代码的经验和技术;第7章结合社会和环境因素给出一些宝贵的建议。【作者简介】Bill Blunden 拥有康奈尔大学物理学学士学位和凯斯西储大学运筹学硕士学位。资深系统维护专家,从事相关工作10余年,对系统软件的维护、遗留代码的调试和优化有非常深入的研究。活跃于计算机安全类社区,常与计算机安全领域多名世界级安全专家交流探讨。
(美) 亚当·巴尔 (Adam Barr) , 著
(美) 威索 (Withall,S.) , 著
于向东, 等编著
丁文, 著
(美) 国际博士, 著
(加) 史密斯 (Smith,P.) , 著
(美) 罗恩·杰弗里斯 (Ron Jeffries) , 著
(美) 特纳 (Turner,M.S.V.) , 著
(美) 麦克布林 (McBreen,P.) , 著