Windows程序调试----前言

前言

    调试Windows程序是项浩大、复杂的工程,一些介绍有关Windows调试的所有方面的书,动辄就能达到这本书的两倍厚。但是全面介绍的书籍有一个缺点.就是它太厚了,令人望之生畏,恐怕很少有人想读它。所以,这本书中,我们圈定了一个范围,将重点放在Windows调试的某些方面。下面介绍这个范围是如何挑选的。

    本书最基本的动机建立在这样的信念上:如果程序员能更好地获取调试知识,他们就可以提髙调试技能。虽然有大量调试知识,但它们目前仍然非常零散,不利于程序员阅读并掌握。这些知识常常是含糊的,不完整的,要么就是把重点放在调试工具而不是调试概念上。最终的调试工具永远是程序员的头脑,但这个工具常常被忽略了。掌握Windows调试的基础概念,有助于预防错误,同时也可以有效地发现残留的错误。

    本书精选了进行Windows调试所需的基础调试技巧。读完每一章,读者都应该将该章所介绍的主题与己有的知识联系起来。本书第一部分介绍了调试策略以帮助理解调试过程,以及如何使用C++语言、断言、跟踪和异常来预防、揭示、诊断和消除错误。第二部分介绍了C++Windows中的调试工具。第三部分介绍了调试技术,帮助读者充分利用Visual C++的调试工具,并特别论述了与调试内存相关的问题、多线程问题和COM问题。

    这里介绍的有些问题跨越了编程技术和调试技术的界限。虽然错误预防更可能是属于调试中的部分,但是为了避免犯错,也需要懂得编程常犯的错误,很多编码文章里没有提到调试和错误预防的内容,只有在这里介绍了。

    很容易看出有些内容我们没有提及。我们基本上没有涉及到仟何不属于Visuul C++ Windows的第三方调试工具,如WinDbg,这样做有几个原因,最明显的原因就是我们把重点放在介绍调试概念上,而不是介绍工具。另一个重要的原因是,Visual C++程序员需要较好的知识,来利用已有的工具。最后,我们怀疑,我们所能介绍的那点东西能不能比厂商介绍的对大家更有帮助。

可我用的是BoundsChecker......

    有些读者会想了“对我用的是BoundsChecker呀,为什么要读这本书呢?”问得好。调试工具,例如 Compuware NuMega公司的BoundsCherker Rationale  Software公司的 Purify,可以很好地发现各种运行期错误,如不良指针和句柄、内内存破坏和泄露、错误的Windows API参数,等等。但是它们做不到的是帮助理解调试过程,

    包括如何使用C++语言、断言、跟踪和异常来预防和消除错误,如何充分利用Visual C++ Windows自带的调试工具来调试多线程程序和COM程序。这些本书全部都做到了。

    而且,这些工具一定不能检测到所有的错误,并且不能用于预防错误。如果完全依赖调试工具,当遇到工具找不到的错误时,你就会很无助。另外,使用这些工具需要执行额外的开发步骤,它们对性能影响也很大,但是本书中介绍的错误检测技术在调试版本时自动进行,对性能的影响也比较小。调试是个很复杂的解谜过程,这些工具往往只能给与片面的帮助。

Windows版本和硬件

    为了简化陈述,我们只选用了当前版本的Windows,在我写书的时候,主流操作系统是 Windows 2000  Windows 98。这里针对 Windows 2000 的内容也适用于 Windows NT 4.0,针对Window 98的内容也适用于Windows 95。我们在说Windows NT 4.0Windows 95时,仅仅指的是该版本的Windows

    为了简化陈述,我们假设你在一个Intel X86CPU上使用Windows。虽然这本书大部分与CPU无关,佴是在阅读16进制转储信息和在汇编级别调试时,CPU就是一个必须考虑的因素了。对那些在非Intel平台上进行汇编级别的调试的程序员,我们只能说抱歉了。

    更新信息

    这本书是在MS Visual C++ 6.0的基础上写的。如果你使用更新的版本,这本书的大部分还能适用,只有编泽器和调试器的一些细节会有些改变。为了让这本书的知识能够及时更新,我们在www.windebug.com上会贴出更新和更正信息。如果你发现了错误,或过时信息,请通知我们,发邮件给corrections@windebug.com

致谢

    这是一本很难写的书,并不是因为没有关于调试的知识,而是知识点太多了,并且非常分散。从很大程度来说,我们的工作就是收集、吸收,然后有条理地描述出来。本书中有不少原创思想,但只是少数部分。我很想感谢每一位对本书中涉及的调试思想有贡献的人,但是很难知道他们是谁。

    Microsoft Systems Journal

    Writing Solid Code: Microsoft's Techniques for Developing BugFree C Programs

    Code Complete: A PraciticaL Handbook of Software Construction

    Zen and the Art of Motorcycle Maintenance: An Tnquiry itito Values

    Windows Internals and Windows 95 System Programming Secrets

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值