围绕实现高效调试这一主题,按照由简入繁、由理论到实践的顺序,《软件调试》一书由以下6篇构成:
第1篇是用来奠定一些基本的概念,介绍一些常识,是对全书内容的第一次概览。第2篇到第4篇介绍了支撑调试技术
的三大基础,即来自计算机系统的硬件核心——CPU的硬件基础,来自计算机系统软件核心——OS的和来自
生产软件的最重要工具——编译器的软件基础。要实现高效调试,被调试软件的“积极配合”也非常重要,
因此第5篇介绍了软件的可调试性,探讨了软件本身应该如何支持“被调试”。
第6篇是对前面内容的“应用”和升华,从调试器的角度介绍了前面的支撑基础是如何在软件调试过程中发挥作用的。
除了以上基本“职能”,每一篇还都肩负了一些辅助“职能”,简述如下:
- 第1篇 绪论
介绍了第一个BUG,修复BUG的成本曲线,以什么样的态度来对待BUG。特别是,我们应该尽可能避免说,“这是某某人的BUG”。
- 第2篇 CPU的调试支持
介绍了关于CPU的一些基本知识,包括保护模式、寄存器、中断、异常、分段机制、分页机制等。一个好的程序员
应该有比较扎实的硬件基础。一个调试高手也必须深谙底层的基础知识。这是我们概要介绍这些内容的目的。但是完整介绍以上内容
需要单独一本书,因此我们给出了进一步学习的最好资源。
- 第3篇 操作系统的调试支持
介绍了Windows操作系统的架构、启动过程、基本部件、进程空间等内容。另外,在介绍Windows操作系统的调试支持设施的同时,
有时也顺便介绍了它的“可调试性”设计,以便为第5篇打基础。Windows是个复杂的操作系统,如果没有好的可调试性设计,那么它
早就会因为Showstopper而被遗弃。
- 第4篇 编译器的调试支持
介绍了栈和堆这两个支撑软件大厦的基石,同时也是与软件调试密切相关的两个主题。
- 第5篇 可调试性
引用了我国最早的诗歌总集《诗经》中的一首诗。除了强调未雨绸缪的道理外,引用这首诗的一个附带目的是,希望程序员能够
以诗人写诗那样的审慎和精益求精的精神来写代码。如果每个程序员都能仔细斟酌自己写的每一段代码,为求一段好的代码,捻断数茎须,那么
我们今天的软件会好很多,软件调试也会容易的多。
顺便引用唐代卢延让的《苦吟》一诗如下:
苦 吟
卢延让
莫话诗中事,诗中难更无。
吟安一个字,捻断数茎须。
险觅天应闷,狂搜海亦枯。
不同文赋易,为著者之乎。
- 第6篇 调试器
在介绍调试器的发展历史时顺便介绍了现代计算机的三个发展阶段:大型机、小型机、微型计算机/PC。在介绍如何使用WinDBG遍历链表时以举例的方式介绍了
Windows操作系统中用来组织进程结构和模块结构的进程链表和模块链表。
除了介绍调试技术的原理、用法、技巧和实践,全书的很多地方都强化了使用调试器进行调试的重要性,赞扬了调试技术的强大,暗示了“调试之美”,鼓舞读者专研调试技术,积极使用调试技术。
|