Effective Debugging:调试软件和系统的66个有效方法

978-7-115-65195-2
作者: 迪欧米迪斯·斯宾奈里斯(Diomidis Spinellis)
译者: 臧秀涛
编辑: 陈灿然

图书目录:

第 1 章 宏观策略 1

条目 1:通过问题跟踪系统处理所有问题 1

条目 2:使用有针对性的查询在网上搜索与问题相关的见解 3

条目 3:确认前置条件和后置条件均已满足 5

条目 4:从问题入手,自下而上追查 bug;从程序开始,自上而下追查 bug 6

条目 5:寻找正常系统和故障系统之间的差异 8

条目 6:使用软件自带的调试工具 10

条目 7:多样化你的构建和执行环境 14

条目 8:将工作重点放在最重要的问题上 17

第 2 章 通用方法与实践 20

条目 9:为调试的成功做好准备工作 20

条目 10:确保问题能够高效重现 22

条目 11:尽可能缩短从做出修改到看到结果的时间 24

条目 12:将复杂的测试场景自动化 25

条目 13:尽量比较全面地将调试数据展示出来 27

条目 14:考虑更新软件 29

条目 15:查阅第三方软件的源代码,深入了解其正确使用方式 30

条目 16:使用专门的监控和测试设备 32

条目 17:让故障的影响凸显出来 34

条目 18:支持在自己的桌面上调试复杂系统 36

条目 19:将调试任务自动化 38

条目 20:在调试前后做好清理工作 39

条目 21:修复所有犯同样错误的代码 40

第 3 章 通用工具与技术 42

条目 22:使用 UNIX 命令行工具分析调试数据 42

条目 23:命令行工具的各种选项和习惯用法 47

条目 24:用编辑器研究调试数据 49

条目 25:优化你的工作环境 51

条目 26:使用版本控制系统追踪 bug 的原因和历史 55

条目 27:使用监控工具处理包含多个独立进程的系统 57

第 4 章 调试器使用技巧 61

条目 28:编译代码时启用符号调试 61

条目 29:单步执行代码 65

条目 30:使用代码和数据断点 66

条目 31:熟悉反向调试 68

条目 32:沿着例程之间的调用关系寻找问题 71

条目 33:通过检查变量和表达式的值查找错误 72

条目 34:将调试器附加到正在运行的进程上 74

条目 35:处理核心转储文件 77

条目 36:配置优化自己的调试工具 79

条目 37:查看汇编代码和原始内存 82

第 5 章 编程技巧 86

条目 38:审查并手动执行可疑代码 86

条目 39:与同事一起审查代码并推理问题 88

条目 40:添加调试功能 89

条目 41:添加日志语句 92

条目 42:使用单元测试 96

条目 43:使用断言 99

条目 44:通过扰动被调试程序来验证自己的假设 101

条目 45:尽量缩小可以正常工作的示例和故障代码之间的差异 102

条目 46:简化可疑代码 103

条目 47:考虑用另一种语言重写可疑代码 106

条目 48:改进可疑代码的可读性和结构 107

条目 49:从根源上解决问题,而不是解决表象 110

第 6 章 编译时技术 112

条目 50:检查生成的代码 112

条目 51:使用静态程序分析工具 115

条目 52:通过配置保证构建和执行的确定性 119

条目 53:对调试库和所执行的检查进行配置 121

第 7 章 运行时技术 126

条目 54:通过构建测试用例来找到错误 126

条目 55:快速失败 130

条目 56:检查应用程序的日志文件 131

条目 57:剖析系统和进程的运行情况 134

条目 58:跟踪代码的执行 138

条目 59:使用动态程序分析工具 142

第 8 章 调试多线程代码 145

条目 60:利用事后调试分析死锁 145

条目 61:捕获和重现 151

条目 62:借助专用工具来发现死锁和竞争条件 156

条目 63:隔离并消除非确定性 161

条目 64:通过观察资源竞争情况来研究可伸缩性问题 163

条目 65:使用性能计数器定位伪共享 166

条目 66:考虑使用更高级别的抽象重写代码 169

详情

本书分为8章,共包含66个条目。本书首先讲解了调试策略(第1章)、调试方法(第2章)以及调试时所用的工具与技术(第3章),旨在帮助读者调试各类软件故障和系统故障。紧接着介绍了可应用于调试工作各阶段的技术,涵盖使用调试器(第4章)、编写程序(第5章)、编译软件(第6章)和运行系统(第7章)等阶段。本书最后一章(第8章)专注于介绍一些特定的调试工具和调试技术,这些工具和技术用于定位多线程和并发代码中那些棘手的bug。

图书摘要

相关图书

现代软件测试技术之美
现代软件测试技术之美
渗透测试技术
渗透测试技术
金融软件测试从入门到实践
金融软件测试从入门到实践
零基础快速入行入职软件测试工程师(第2版)
零基础快速入行入职软件测试工程师(第2版)
用ChatGPT做软件测试
用ChatGPT做软件测试
深入理解软件性能——一种动态视角
深入理解软件性能——一种动态视角

相关文章

相关课程