本书是对软件调试技术在过去50年中所取得成就的全面展示,也是对作者本人在软件设计和系统开发第一线奋战10多年的经验总结。本书理论与实践紧密结合,选取了大量具有代表性和普遍意义的技术细节进行讨论,是学习软件调试技术的宝贵资料,适合每一位希望深刻理解软件和自由驾驭软件的人阅读,特别是从事软件开发、测试、支持的技术人员和有关的研究人员。
本书深入系统地介绍了以调试器为核心的各种软件调试技术。本书共30章,分为6篇。
第1篇介绍了软件调试的概况和简要历史。
第2篇以英特尔架构(IA)的CPU为例,介绍了计算机系统的硬件核心所提供的调试支持,包括异常、断点指令、单步执行标志、分支监视、JTAG和MCE等。
第3篇以Windows操作系统为例,介绍了计算机系统的软件核心中的调试设施,包括内核调试引擎、用户态调试子系统、异常处理、验证器、错误报告、事件追踪、故障转储、硬件错误处理等。
第4篇以Visual C/C++编译器为例,介绍了生产软件的主要工具的调试支持,重点讨论了编译期检查、运行期检查及调试符号。
第5篇讨论了软件的可调试性,探讨了如何在软件架构设计和软件开发过程中加入调试支持,使软件更容易被调试。
在前5篇内容的基础上,第6篇首先介绍了调试器的发展历史、典型功能和实现方法,然后全面介绍了WinDBG调试器,包括它的模块结构、工作模型、使用方法和主要调试功能的实现细节。
目录:
第1篇 绪论
第1章 软件调试基础
第2篇 CPU的调试支持
第2章 CPU基础
第3章 中断和异常
第4章 断点和单步执行
第5章 分支记录和性能监视
第6章 机器检查架构(MCA)
第7章 JTAG调试
第3篇 操作系统的调试支持
第8章 Windows概要
第9章 用户态调试模型
第10章 用户态调试过程
第11章 中断和异常管理
第12章 未处理异常和JIT调试
第13章 硬错误和蓝屏
第14章 错误报告
第15章 日志
第16章 事件追踪
第17章 WHEA
第18章 内核调试引擎
第19章 Windows的验证机制
第4篇 编译器的调试支持
第20章 编译和编译期检查
第21章 运行库和运行期检查
第22章 栈和函数调用
第23章 堆和堆检查
第24章 异常处理代码的编译
第25章 调试符号
第5篇 可调试性
第26章 可调试性概览
第27章 可调试性的实现
第6篇 调试器
第28章 调试器概览
第29章 WinDBG及其实现
第30章 WinDBG用法详解
附录A 示例程序列表
附录B WinDBG标准命令列表
索引