<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

文章分类

导航

订阅

迎接2008!

2008年的第一天,阳光灿烂!对于上海这个多阴多雨的城市,这冬日的阳光着实是为新的一年送了一份厚礼!

每个人对新的一年都会有很多期待,北京奥运会无疑是最有共性的一个。于我,《软件调试》的出版是第一号的期待。一些热心的朋友也在期待这本书,他们的期待是我的动力。

以下是《软件调试》一书的主要内容,全书共30章,分为六篇。

第一部分:绪论(第1章)
作为全书的开篇,这一部分介绍了软件调试的概念、基本过程、分类、和简要历史,并浏览了本书后面将详细介绍的主要调试技术。

第二部分:CPU的调试支持(2~7章)
CPU是计算机系统的硬件核心。这一部分以IA-32 CPU为例系统描述了CPU的调试支持,包括如何支持软件断点、硬件断点和单步调试(第4章),如何支持硬件调试器(第7章),记录分支、中断和异常和支持性能分析的方法(第5章),以及支持硬件可调试性的错误检查和报告机制——MCA(机器检查架构)(第6章)。为了帮助读者理解这些内容,以及本书后面的内容,第2章介绍了关于CPU的一些基础知识,包括指令集、寄存器和保护模式,第3章深入介绍了与软件调试关系密切的中断和异常机制。

第三部分:操作系统的调试支持(8~19章)
操作系统(OS)是计算机系统的管理者和软件核心,是应用软件运行的基础。这一部分以Windows操作系统为例描述了操作系统的调试支持,包括如何支持应用程序调试(第9章和第10章),如何支持调试系统内核和驱动程序(第18章)以及支持可调试性的错误提示机制(第13章)、错误报告机制——WER(第14章)、错误记录机制(第15章)、事件追踪机制——ETW(第16章)、硬件错误处理机制——WHEA(第17章)。第19章介绍了提高测试和调试效率的程序验证(Verifier)机制和有关工具。第11章介绍了中断和异常的分发与管理。第12章介绍了未处理异常和JIT调试。作为以上内容的铺垫,第8章介绍了Windows操作系统的基本知识,包括架构、关键模块和系统进程等。

第四部分:编译器的调试支持(20~25章)
编译器是软件生产的主要工具,它帮助我们将程序语言翻译为可以被CPU所理解的机器码。支持软件调试始终是编译器的一个设计目标。在编译过程中,编译器会帮我们检查程序中的静态错误(编译期检查)(第20章);为了帮助发现只有在运行时才体现出来的问题,编译器可以在程序中插入代码报告运行时的可疑情况(运行期检查)(第21章)。很多软件缺欠是与局部变量、缓冲区和内存使用有关的,对此,编译器设计了很多种检查和保护栈(第22章)和堆(第23章)的机制。编译器对软件调试的另一个重大支持就是调试符号。调试符号是软件调试时的灯塔,是观察数据结构和进行源代码级调试所必需的。25章详细介绍了调试符号的产生过程、种类、文件格式、和用法。24章介绍了异常处理是如何编译的,包括C++的异常处理和结构化异常处理(SEH)。在介绍以上内容时,本章还讨论了函数调用规范,栈的布局,以及堆的内部结构等与软件调试密切相关的基础内容。

第五部分:可调试性(26~27章)
提高软件调试效率是一项系统工程,除了CPU、操作系统和编译器所提供的调试支持外,被调试软件本身的可调试性也是至关重要的。这一篇,我们先介绍了提高软件可调试性的意义,基本原则,实例和需要注意的问题(第26章)。而后讨论了如何在软件开发实践中实现可调试性(第27章),包括软件团队中各个角色应该承担的职责,实现可追溯性、可观察性和自动报告的方法。

第六部分:调试器(28~30章)
调试器(Debugger)是软件调试的核心工具。借助调试器,我们可以将软件冻结(中断)在我们指定的一个位置,然后观察它的内部状态,了解它的运行轨迹和即将执行的操作。根据需要,我们可以分析它的任一条指令,查看它使用的任一个内存单元。分析后,我们可以让它从原来的地方恢复执行,也可以让它“飞”到一个新的地方继续执行,或者干脆将其终止。这一部分分为3章,第28章介绍了调试器的历史、主要功能、分类方法、实现模型、架构和两个公开标准——HPD(High Performance Debugger)和JPDA(Java Platform Debugger Architecture)。第29章分析了WinDBG调试器的架构和主要功能的实现原理。第30章分17个主题系统的介绍了WinDBG调试器的使用方法。

除了以上六个部分,附录A列出了IA-32 CPU定义的每个异常的详细资料,附录B列出了本书附带的所有工具和源程序。

本文是第一次将以上信息公诸于众,如果您看了后有任何意见,请不吝指正!恭祝大家2008年快乐如意!

 

 

 

posted on 2008年1月1日 10:21 由 Raymond

# re: 迎接2008! @ 2008年1月5日 18:34

ma fan nin kan kan bbs [ACPI]ban ba~

zl000

# re: 迎接2008! @ 2008年1月8日 14:22

张老师加油,我们支持你

ggggchen

# re: 迎接2008! @ 2008年3月6日 9:47

是本非常不错的书籍,期待中。

下载了第30章的pdf,windbg调试,写的非常详细,所以一直google来到这个地方了。

还有,书籍什么时候才能出来呀?关注中,要能够订购的话,能否先订购呢?急切的期待!

i_yezi

# re: 迎接2008! @ 2008年3月6日 12:47

i_yezi:
你看的应该是第一版草稿,目前所有章节在紧张的审核和编辑中,估计5月份可以印刷出版。

Raymond

# re: 迎接2008! @ 2008年5月31日 18:16

呵呵,这本书可出版了?

Coding

Powered by Community Server Powered by CnForums.Net