Windows程序调试
[绝版]基本信息
- 原书名: Debugging Windows Programs
- 原出版社: Addison-Wesley
- 作者: (美)Everett N.McKay,Mike Wooding
- 译者: 何健辉 许俊娟 董伟
- 丛书名: 开发大师系列
- 出版社:中国电力出版社
- ISBN:7508309421
- 上架时间:2002-4-10
- 出版日期:2002 年5月
- 页码:448
- 版次:1-1
- 所属分类:
计算机 > 操作系统 > Windows
合作专区 > 微软技术图书 > 微软操作系统 > Windows
内容简介回到顶部↑
调试Windows程序是一件繁琐而又复杂的事情,掌握必要的调试策略却可以使这些工作变得轻松起来。本书精选了进行Windows调试所需的基础调试技巧,共分为三个大部分。第一部分介绍调试策略,帮助理解调试过程,以及如何使用C++语言、断言、跟踪和异常来预防、揭示、诊断和消除错误。第二部分介绍C++和Windows中的调试工具。第三部分介绍调试技术,帮助读者充分利用Visua C++的调试工具,并特别论述了与调试内存相关的问题、多线程问题和COM问题。本书将重点放在调试概念上,而不是简单地介绍工具,因此具有很强的实用性,是您在程序开发时的最佳选择。
本书送合有一定Visual C++基础知识的程序开发员及计算机爱好者阅读。
本书送合有一定Visual C++基础知识的程序开发员及计算机爱好者阅读。
目录回到顶部↑
常见问题
前言
简介
第一部分调试策略
第1章 调试的过程
1.1 错误的调试五步曲
1.2 正确的调试五步曲
1.3 确定错误的存在
1.4 收集错误信息
1.5 分析错误信息
1.6 消除错误
1.7 修改的验证
1.8 巧妙地而不是艰苦地调试
1.9 推荐阅读
第2章 编写便于调试的c++代码
2. 1 设计
2. 2 c++编程风格
2.3 c++语言
2.4 visual c++编译器
2. 5 推荐阅读
前言
简介
第一部分调试策略
第1章 调试的过程
1.1 错误的调试五步曲
1.2 正确的调试五步曲
1.3 确定错误的存在
1.4 收集错误信息
1.5 分析错误信息
1.6 消除错误
1.7 修改的验证
1.8 巧妙地而不是艰苦地调试
1.9 推荐阅读
第2章 编写便于调试的c++代码
2. 1 设计
2. 2 c++编程风格
2.3 c++语言
2.4 visual c++编译器
2. 5 推荐阅读
前言回到顶部↑
调试Windows程序是一项浩大、复杂的工程。一些介绍有关Windows调试的所有方面的书,动辄就能达到这本书的两倍厚。但是全面介绍的书籍有一个缺点,就是它太厚了,令人望之生畏,恐怕很少有人想读它。所以,这本书中,我们圈定了一个范围,将重点放在Windows调试的某些方面。下面介绍这个范围是如何挑选的。
本书最基本的动机建立在这样的信念上:如果程序员能更好地获取调试知识,他们就可以提高调试技能。虽然有大量调试知识,但它们目前仍然非常零散,不利于程序员阅读并掌握。这些知识常常是含糊的,不完整的,要么就是把重点放在调试工具而不是调试概念上。最终的调试工具永远是程序员的头脑,但这个工具常常被忽略了。掌握Windows调试的基础概念,有助于预防错误,同时也可以有效地发现残留的错误。
本书精选了进行Windows调试所需的基础调试技巧。读完每一章,读者都应该将该章所介绍的主题与已有的知识朕系起来。本书第一部分介绍了调试策略以帮助理解调试过程,以及如何使用C++语言、断言、跟踪和异常来预防、揭示、诊断和消除错误。第二部分介绍了C++和Windows中的调试工具。第三部分介绍了调试技术,帮助读者充分利用Visual C++的调试工具,并特别论述了与调试内存相关的问题、多线程问题和COM问题。
这里介绍的有些问题跨越了编程技术和调试技术的界限。虽然错误预防更可能是属于调试中的部分,但是为了避免犯错,也需要懂得编程常犯的错误。很多编程文章里没有提到调试和错误预防的内容,只有在这里介绍了。
很容易看出有些内容我们没有提及。我们基本上没有涉及到任何不属于Visual C++或Windows的第三方调试工具,如WinDbg。这样做有几个原因。最明显的原因就是我们把重点放在介绍调试概念上,而不是介绍工具。另一个重要的原因是,Visual C++程序员需要较好的知识,来利用已有的工具。最后,我们怀疑,我们所能介绍的那点东西能不能比厂商介绍的对大家更有帮助。
可我用的是BoundsChecker呀……
有些读者会想了:“可我用的是BoundsChecker呀,为什么要读这本书呢?”问得好。调试工具,例如 Compuware NuMega公司的BoundsChecker和Ratlonale Sottware公司的Purify,可以很好地发现各种运行期错误,如不良指针和匈柄、内存破坏(corruption)和泄漏(leak)、错误的Windows API参数,等等。但是它们做不到的是帮助理解调试过程,包括如何使用C++语言、断言、跟踪和异常来预防和消除错误,如何充分利用 Visual C++和Windows自带的调试工具来调试多线程程序和COM程序。这些本书全部都做到了。
而且,这些工具一定不能检测到所有的错误,并且不能用于预防错误。如果完全依赖调试工具,当遇到工具找不到的错误时,你就会很无助。另外,使用这些工具需要执行额外的开发步骤,它们对性能影响也很大,但是本书中介绍的错误检测技术在调试版本时自动进行,对性能的影响也比较小。调试是个很复杂的解谜过程,这些工具往往只能给与片面的帮助。
如何阅读本书
虽然我们希望读者能够一页页地阅读本书,但我们也了解读者通常都很忙,一般没有时间通读。所以,每章本身都是完备的,你可以根据需要只读某些章。完备,意味着可能有些冗余的部分,虽然我们尽力缩小了这些冗余,但它们仍然不只出现在一章之中。我们希望你能赞同这种方式,它使得本书成为一个更好用的手册。
在目录后,有一个常见问题的列表,可以帮助你很快地找到问题的答案。第8章是用同样的方式组织的。这一章和常见问题列表都能帮助你很快地找到某个调试问题的解决方法。
Windows程序有很多种,所以也有许多不同的调试技术。我们将从Windows API、MFC和ATL应用程序基本结构的观点来介绍调试。我们会清楚地标出那些用于MFC和ATL的调试技术,所以当你不用到这些框架时,如果时间很紧,就不用看了。如果有时间,当然最好阅读一下,因为你可以从中了解到其他观点的调试技术。
最后,每章都有一个关键的调试建议,我们把它用这种形式表示:
这些提示突出了调试概念中最有用的地方,很容易看到,这可以帮助你快速找到重要的调试主题。
Windows版本和硬件
为了简化陈述,我们只选用了当前版本的Windows,在我写书的时候,主流操作系统是Windows2000和 Windows 98。这里针对Windows2000的内容也适用于Windows NT 4.0,针对Window 98的内容也适用于Windows 95。我们在说Windows NT 4.0和Windows 95时,仅仅指的是该版本的Windows。
为了简化陈述,我们假设你在一个Intel X86的CPU上使用 Windows。虽然这本书大部分与CPU无关,但是在阅读16进制转储信息和在汇编级别调试时,CPU就是一个必须考虑的因素了。对那些在非Intel平台上进行汇编级别的调试的程序员,我们只能说抱歉了。
“我”是谁
虽然封皮上只有两个名字,但每章都是用第一人称介绍的。Mike Woodring写了第 10章“调试多线程程序”和第11章“ COM调试”,Everett McKay写了其他部分。所以,在第10章和第11章的“我”指的就是 Mike Woodring,而其他章节的“我”就是 Everett McKay。
更新信息
本书最基本的动机建立在这样的信念上:如果程序员能更好地获取调试知识,他们就可以提高调试技能。虽然有大量调试知识,但它们目前仍然非常零散,不利于程序员阅读并掌握。这些知识常常是含糊的,不完整的,要么就是把重点放在调试工具而不是调试概念上。最终的调试工具永远是程序员的头脑,但这个工具常常被忽略了。掌握Windows调试的基础概念,有助于预防错误,同时也可以有效地发现残留的错误。
本书精选了进行Windows调试所需的基础调试技巧。读完每一章,读者都应该将该章所介绍的主题与已有的知识朕系起来。本书第一部分介绍了调试策略以帮助理解调试过程,以及如何使用C++语言、断言、跟踪和异常来预防、揭示、诊断和消除错误。第二部分介绍了C++和Windows中的调试工具。第三部分介绍了调试技术,帮助读者充分利用Visual C++的调试工具,并特别论述了与调试内存相关的问题、多线程问题和COM问题。
这里介绍的有些问题跨越了编程技术和调试技术的界限。虽然错误预防更可能是属于调试中的部分,但是为了避免犯错,也需要懂得编程常犯的错误。很多编程文章里没有提到调试和错误预防的内容,只有在这里介绍了。
很容易看出有些内容我们没有提及。我们基本上没有涉及到任何不属于Visual C++或Windows的第三方调试工具,如WinDbg。这样做有几个原因。最明显的原因就是我们把重点放在介绍调试概念上,而不是介绍工具。另一个重要的原因是,Visual C++程序员需要较好的知识,来利用已有的工具。最后,我们怀疑,我们所能介绍的那点东西能不能比厂商介绍的对大家更有帮助。
可我用的是BoundsChecker呀……
有些读者会想了:“可我用的是BoundsChecker呀,为什么要读这本书呢?”问得好。调试工具,例如 Compuware NuMega公司的BoundsChecker和Ratlonale Sottware公司的Purify,可以很好地发现各种运行期错误,如不良指针和匈柄、内存破坏(corruption)和泄漏(leak)、错误的Windows API参数,等等。但是它们做不到的是帮助理解调试过程,包括如何使用C++语言、断言、跟踪和异常来预防和消除错误,如何充分利用 Visual C++和Windows自带的调试工具来调试多线程程序和COM程序。这些本书全部都做到了。
而且,这些工具一定不能检测到所有的错误,并且不能用于预防错误。如果完全依赖调试工具,当遇到工具找不到的错误时,你就会很无助。另外,使用这些工具需要执行额外的开发步骤,它们对性能影响也很大,但是本书中介绍的错误检测技术在调试版本时自动进行,对性能的影响也比较小。调试是个很复杂的解谜过程,这些工具往往只能给与片面的帮助。
如何阅读本书
虽然我们希望读者能够一页页地阅读本书,但我们也了解读者通常都很忙,一般没有时间通读。所以,每章本身都是完备的,你可以根据需要只读某些章。完备,意味着可能有些冗余的部分,虽然我们尽力缩小了这些冗余,但它们仍然不只出现在一章之中。我们希望你能赞同这种方式,它使得本书成为一个更好用的手册。
在目录后,有一个常见问题的列表,可以帮助你很快地找到问题的答案。第8章是用同样的方式组织的。这一章和常见问题列表都能帮助你很快地找到某个调试问题的解决方法。
Windows程序有很多种,所以也有许多不同的调试技术。我们将从Windows API、MFC和ATL应用程序基本结构的观点来介绍调试。我们会清楚地标出那些用于MFC和ATL的调试技术,所以当你不用到这些框架时,如果时间很紧,就不用看了。如果有时间,当然最好阅读一下,因为你可以从中了解到其他观点的调试技术。
最后,每章都有一个关键的调试建议,我们把它用这种形式表示:
这些提示突出了调试概念中最有用的地方,很容易看到,这可以帮助你快速找到重要的调试主题。
Windows版本和硬件
为了简化陈述,我们只选用了当前版本的Windows,在我写书的时候,主流操作系统是Windows2000和 Windows 98。这里针对Windows2000的内容也适用于Windows NT 4.0,针对Window 98的内容也适用于Windows 95。我们在说Windows NT 4.0和Windows 95时,仅仅指的是该版本的Windows。
为了简化陈述,我们假设你在一个Intel X86的CPU上使用 Windows。虽然这本书大部分与CPU无关,但是在阅读16进制转储信息和在汇编级别调试时,CPU就是一个必须考虑的因素了。对那些在非Intel平台上进行汇编级别的调试的程序员,我们只能说抱歉了。
“我”是谁
虽然封皮上只有两个名字,但每章都是用第一人称介绍的。Mike Woodring写了第 10章“调试多线程程序”和第11章“ COM调试”,Everett McKay写了其他部分。所以,在第10章和第11章的“我”指的就是 Mike Woodring,而其他章节的“我”就是 Everett McKay。
更新信息








点击看大图





加载中...

