天天看点

Windows 顶尖内核专家Mark Russinovich 谈 Windows 高级调试

软件的目标之一就是简化人们的工作。如果能够对某个工作流程进行优化或者自动化,那么人们在存储数据或者处理数据时就能变得更加高效,软件的出现正 是为了实现这个目标。然而,在带来简化的同时,软件一定不能引入更多的复杂性,这就意味着软件在安装时应该只需要很少的用户交互,能够与其他程序提供的服 务和数据无缝地集成起来,并且对软件和硬件等环境的变化有着很好的适应性。

  然而,在努力简化用户和管理员操作的同时,软件也正在变得 越来越复杂。这种复杂性可能体现在多个方面,例如需要处理的数据量,相互通信程序的数量,内部并行语义的深度,或者从其他软件中导入函数的数量。在软件外 表的简单性下隐藏了不同软件层次之间的许多微妙问题,例如同步,相互依赖性以及各种假设等,这些问题通常涉及到不同的程序,甚至不同的计算机。软件的故障 通常表现为在各个库中发生的崩溃,毫无意义的错误消息,或者程序的挂起,要找出发生故障的组件--还不是要找出故障的原因--都是非常困难的。

   阅读本书的理由是,当你在开发,测试或者提供技术支持时,通常会遇到各种软件故障,而你往往需要分析这些故障的产生根源,甚至还可能需要修复这些故障。 如果想顺利地完成这些工作,那么就需要尽可能快速地和高效地找出问题的源头,这就意味着首先要知道观察软件的哪些方面,从什么地方开始观察以及如何进行观 察。换句话说,你需要知道目前有哪些可用的工具,对于每种类型的故障使用何种工具最为有效,以及如何利用这些工具来快速缩小问题的查找范围。

   在大多数时候,学习如何分析和调试Windows程序是工作中的惟一选择。在调试某个程序故障时,如果知道通过某种工具或者某个特定的调试命令可以极大 地减少工作量,那么你将迅速地使问题水落石出,而不会花了数小时甚至数天的时间还不能取得任何进展。这也是本书物超所值的原因所在。

   《Windows高级调试》不仅是来源于Mario和Daniel数年的调试实践经验,更是来源于Microsoft客户支持服务部门和Window产品 与工具开发团队的集体智慧。没有任何其他参考资料能够比本书更权威地介绍Windows调试领域的知识,例如Windows堆管理器如何影响缓冲区溢出的 行为,或者在调试DCOM挂起问题时应该使用哪些调试扩展命令等。我在调试Windows应用程序和设备驱动程序等领域已经工作了10余年的时间,但当我 阅读本书时,还是学到了许多新的技术,工具和调试命令,既包括我从未遇到过的技术,也包括我曾经使用过的技术。

  我们的工作能力并不在于如何调试问题,而是在于调试问题的速度和准确度。无论你在Windows程序调试领域已经工作了数年的时间,还是刚刚开始,Mario和Daniel都为你提供了丰富的知识。祝你的调试工作进展顺利!

  Mark Russinovich

  技术专家,Microsoft公司平台与服务部门

继续阅读