
| 《软件调试实战》是4位深谙软件调试之道的资深开发人员的实战经验总结,不仅讲述了简单的源代码调试,还涵盖了各个领域的最常见的实际问题,包括程序链接、内存存取、并行处理和性能分析。最后几章讨论了静态检查器,介绍了一些较好地运用了调试技巧的代码编写方法。书中讲述的调试技术不仅可以用于C/C++程序,还可以用于其他语言编写的程序。软件调试是软件开发中最令人苦恼的环节。反复思考每个假设,反复斟酌从需求到实现的每个步骤,将耗费大量时间。最糟糕的是,调试根本无法预测,我们永远无法知道修复一个bug需要多长时间,甚至根本不知道是否还能修复它。然而,如果采用系统的方式并配备合适的工具,调试也会充满乐趣,成功的调试就像解出难题、猜出谜语或破获奇案一样令人激动。这本书就能帮你实现这一惊天逆转。Amazon五星图书Synopsys公司专家的调试经验总结软件调试权威指南 |
| Thorsten Grotker,Ulrich Holtmann,Holger Keding,Markus Wloka4位作者均拥有德国或美国著名高等学府的博士学位,目前都任职于EDA(电子设计自动化)软件领导厂商Synopsys(新思)公司,分别担任研发主管、资深软件工程师等职位,负责开发编译器和调试工具,具有解决各种调试问题的丰富经验。 |
| 第1章 谁编写软件,谁制造bug(为什么需要本书) 第2章 系统性调试方法 2.1 为什么要遵循结构化的过程 2.2 充分利用机会 2.3 条黄金规则 2.3.1 理解需求 2.3.2 制造失败 2.3.3 简化测试用例 2.3.4 读取恰当的错误消息 2.3.5 检查显而易见的问题 2.3.6 从解释中分离出事实 2.3.7 分而治之 2.3.8 工具要与bug匹配 2.3.9 一次只做一项更改 2.3.10 保持审计跟踪 2.3.11 获得全新观点 2.3.12 bug不会自己修复 2.3.13 用回归测试来检查bug修复 2.4 构建一个好的工具包 2.4.1 工具箱 2.4.2 每天运行测试,防止出现bug 2.5 认清敌人——遇到bug家族 2.5.1 常见bug 2.5.2 偶发性bug 2.5.3 heisenbug 2.5.4 隐藏在bug背后的bug 2.5.5 秘密bug——调试与机密性 2.5.6 更多读物 第3章 查找根源——源代码调试器 3.1 可视化程序行为 3.2 准备简单的可预测的示例 3.3 使调试器与程序一起运行 3.4 学习在程序崩溃时执行栈跟踪 3.5 学习使用断点 3.6 学习在程序中导航 3.7 学习检查数据:变量和表达式 3.8 一个简单示例的调试会话 第4章 修复内存问题 4.1 c/c++中的内存管理——功能强大但很危险 4.1.1 内存泄漏 4.1.2 内存管理的错误使用 4.1.3 缓冲区溢出 4.1.4 未初始化的内存bug 4.2 有效的内存调试器 4.3 示例1:检测内存访问错误 4.3.1 检测无效的写访问 4.3.2 检测对未初始化的内存的读取操作 4.3.3 检测内存泄漏 4.4 示例2:对内存分配/释放的不完整调用 4.5 结合使用内存调试器和源代码测试器 4.6 减少干扰,排查错误 4.7 何时使用内存调试器 4.8 约束 4.8.1 测试用例应该有很好的代码覆盖率 4.8.2 提供更多计算机资源 4.8.3 可能不支持多线程 4.8.4 对非标准内存处理程序的支持 第5章 剖析内存的使用 第6章 解决性能问题 第7章 调试并行程序 第8章 查找环境和编译器问题 第9章 处理链接问题 第10章 高级调试 第11章 编写可调试的代码 第12章 静态检查的作用 第13章 结束语 附录a 调试命令 附录b 工具资源 附录c 源代码 参考文献 |
商品评论(0条)