图书介绍

软件驱魔 调试和优化遗留代码的艺术【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

软件驱魔 调试和优化遗留代码的艺术
  • (美)布伦登著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111462842
  • 出版时间:2014
  • 标注页数:253页
  • 文件大小:41MB
  • 文件页数:270页
  • 主题词:软件开发-研究

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

软件驱魔 调试和优化遗留代码的艺术PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第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.2 switch与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

热门推荐