出版时间:2009 出版社:机械工业出版社 作者:Mario Hewardt,Daniel Pravat 页数:504 译者:聂雪军
Tag标签:无
前言
软件的目标之一就是简化人们的工作。如果能够对某个工作流进行优化或者自动化,那么人们在存储数据或者处理数据时就能变得更加高效,软件的出现正是为了实现这个目标。然而,在带来简化的同时,一定不能在软件中引入更多的复杂性,这就意味着软件在安装时应该只需要很少的用户交互,能够与其他程序提供的服务和数据无缝地集成起来,并且对软件和硬件环境的变化有着很好的适应性。 然而,在努力简化用户和管理员操作的同时,软件也正在变得越来越复杂。这种复杂性可能体现在多个方面,例如需要处理的数据量、相互通信程序的数量、内部并行语义的深度或者从其他软件中导入函数的数量。在软件外表的简单性下隐藏了不同软件层次之间的许多微妙问题,例如同步、相互依赖性以及各种假设等,这些问题通常涉及不同的程序,甚至不同的计算机。软件的故障通常表现为在各个库中发生的崩溃、毫无意义的错误消息或者程序的挂起,要找出发生故障的组件(还不是要找出故障的原因)都是非常困难的。 阅读本书的理由是,当你在开发、测试或者提供技术支持时,通常会遇到各种软件故障,而你往往需要分析这些故障的产生根源,甚至还可能需要修复这些故障。如果想顺利地完成这些工作,那么就需要尽可能快速和高效地找出问题的源头,这意味着首先要知道观察软件的哪些方面,从什么地方开始观察以及如何进行观察。换句话说,你需要知道目前有哪些可用的工具,对于每种类型的故障使用何种工具最为有效,以及如何利用这些工具来快速缩小问题的查找范围。 大多数时候,在工作中学习如何分析和调试windows程序是惟一选择。在调试某个程序故障时,如果知道通过某种工具或者某个特定的调试命令可以极大地减少工作量,那么你将迅速地使问题水落石出,而不会花了数小时甚至数天的时间还不能取得任何进展。这也是本书物超所值的原因所在。 本书不仅来源于Mario和Daniel多年的调试实践经验,更来源于Microsoft客户支持服务部门和Window s产品与工具开发团队的集体智慧。没有任何其他参考资料能够比本书更权威地介绍Windows调试领域的知识,例如Windows堆管理器如何影响缓冲区溢出的行为,或者在调试DCOM挂起问题时应该使用哪些调试扩展命令等。我在调试Windows应用程序和设备驱动程序等领域已经工作了10余年的时间,但当我阅读本书时,还是学到了许多新的技术、工具和调试命令,既包括我从未遇到过的技术,也包括我曾经使用过的技术。 我们的工作价值并不在于如何调试问题,而是在于调试问题的速度和准确度。无论你在Windows程序调试领域已经工作了数年的时间,还是刚川开始,Mario和Daniel都为你提供了丰富的知识。祝你的调试工作进展顺利!
内容概要
本书主要讲解Windows高级调试思想和工具,并涉及一些高级调试主题。本书内容主要包括:工具简介、调试器简介、调试器揭密、符号文件与源文件的管理、栈内存破坏、堆内存破坏、安全、进程间通信、资源泄漏、同步、编写定制的调试扩展、64位调试、事后调试、Windows Vista基础以及应用程序验证器的测试设置等。 本书内容详实、条理清楚。 本书适合Windows开发人员、Windows测试人员和Windows技术支持人员等参考。 对Windows开发人员来说,很少有任务比调试程序更具挑战性和重要性。然而,人们却往往很难获得一些关干调试技术的可靠而又实用的信息。现在,两位来自Microsoft的系统级开发工程师,带着他们15年的实践经验,为读者全面而系统地揭示了Windows调试技术。 Mario Hewardt和Daniel Pravat介绍了在应用程序的整个生命周期内需要使用到的各种调试技术,并且展示了如何有效地使用Microsoft提供的强大调试器和第三方解决方案。 为了使你尽快地找到切实可行的解决方案,本书内容围绕真实的调试场景来组织,并且通过代码示例来讲解和分析专业开发人员所要面对的各种调试问题。作者还介绍了一些新兴的调试主题,例如Windows操作系统的核心概念、安全。Windows Vista以及64位调试等,每个主题都包含细致入微的阐述。 读完本书,你将能够 掌握当今最强大的Windows调试工具,包括NTSD、CDB、WinDbg、KD以及ADPlus等。 对没有针对调试进行优化的代码进行调试。 理解调试器的”内幕”并高效地管理符号文件和源文件。 调试与栈和堆相关的复杂内存破坏问题。 解决复杂的安全问题。 调试跨进程问题:身份跟踪,RPC调试扩展,以及通过Wireshark来跟踪IPC。 找出并修复资源泄漏,例如内存泄漏和句柄泄漏。 调试常见的线程同步问题。 学习如何编写定制的调试扩展。 通过故障转储来执行”事后调试”,并与Windows错误报告机制集成起来。 通过DebugDiag和调试命令Analyze来自动化调试过程。 无论你是系统层开发人员,还是应用层开发人员,本书都将使你深入理解Windows中的各种调试技术。本书或许在下一个项目中就可以帮你节省数周的工作时间。
书籍目录
译者序序言前言作者简介第一部分 概述 第1章 调试工具简介 1.1 泄漏诊断工具 1.2 Windows调试工具集 1.3 UMDH 1.4 Microsoft应用程序验证器 1.5 全局标志 1.6 进程浏览器 1.7 Windows-驱动程序开发包 1.8 Wireshark 1.9 DebugDiag 1.10 小结 第2章 调试器简介 2.1 调试器的基础知识 2.1.1 调试器类型 2.1.2 调试器命令 2.1.3 调试器的配置 2.1.4 通过内核态调试器重定向用户态调试器 2.1.5 是否使用KD 2.2 基本的调试任务 2.2.1 键入调试命令 2.2.2 解析调试器的提示信息 2.2.3 配置和使用符号 2.2.4 使用源文件 2.2.5 分析命令 2.2.6 修改上下文的命令 2.2.7 其他的辅助命令 2.2.8 示例 2.3 远程调试 2.3.1 Remote.exe 2.3.2 调试服务器 2.3.3 进程服务器与内核服务器 2.3.4 远程调试中的符号解析 2.3.5 远程调试中的源代码解析 2.4 调试场景 2.4.1 调试非交互式进程(服务或者COMJ服务器) 2.4.2 在没有内核态调试器的情况下调试非交互式进程(服务或者COM服务器) 2.5 小结 第3章 调试器揭密 3.1 用户态调试器的内幕 3.1.1 操作系统对用户态调试器的支持 3.1.2 调试事件的顺序 3.1.3 控制来,自调试器的异常和事件 3.1.4 内核态调试器中的调试事件处理 3.2 控制调试目标 3.2.1 断点的工作原理 3.2.2 内存访问断点的工作原理 3.2.3 处理器跟踪 3.2.4 实时调试中的线程状态管理 3.2.5 通过用户态调试器来挂起线程 3.3 小结 第4章 符号文件与源文件的管理 4.1 调试符号的管理 4.1.1 公有符号的生成 4.1.2 在符号库中存储符号 4.1.3 在HTTP服务器上共享公有符号 4.2 源文件的管理……第二章 调试第三章 高级主题
媒体关注与评论
“谁说你不能学习别人的经验?本书就包含了丰富而翔实的信息,它们非常清晰地阐述了如何通过一种逻辑的方法来找出和修复程序中的问题。对于那些在Microsoft Windows平台上开发、测试和提供技术支持的人员来说,本书绝对是一本不可或缺的参考手册。” ——Bob Wilton,资深工程师就职于Microsoft公司中CPR(Critical Problem Resolution)小组 “我有幸与本书的作者在超高要求系统(Extremely Demanding System)领域共事了8年多的时间。本书包含了非常有价值的知识,我们曾经感叹,要是在项目开始之前就知道这些知识该有多好——这位调试大师或许只有2月29号才会告诉你这些知识,因为他只有在这一天的下午才有空;只有亲自去构建和调试那些复杂的系统项目而不是道听途说,才能获得这些宝贵的知识。在大多数书籍中,一些高级主题总是作为‘留给读者的练习’或者‘请参阅其他高级参考书’,而这些主题似乎从来就没有出现过。本书属于那些‘其他高级参考书’。要买就买两本吧,因为你将经常要借一本给其他人。 ——Raymond McCollum,架构师就职于Microsoft前沿安全产品(Forefront Security Product)部门 “由Microsoft的Mario和Daniel合著的这本书是一本非常棒的参考书,面向的读者包括中级调试人员和高级调试人员。本书通过对一些示例进行深入讲解来阐述如何调试各种错综复杂的问题,例如栈破坏和堆破坏等,这使得本书与目前市面上讲解Win32软件调试的众多书籍相比显得卓尔不群。本书的实用性非常高,包含了丰富的调试技巧和策略。” ——Kinshuman,开发主管就职于Windows核心操作系统部门 “我非常高兴地看到在这本书中包含了大量非常聪明的调试技巧。它不仅介绍了如何对付那些难以诊断的问题,而且还详细解释了在这些技术后面隐藏的底层机制。本书中介绍的实用方法对于人们理解一些关键的Windows领域是非常有帮助的。” ——Adrian Marinescu,软件架构师就职于Microsoft “本书详细描述了如何调试和修复软件中的各种问题。本书的内容是根据作者在跟踪各种软件问题时所积累的丰富经验而提炼出来的。本书不仅给出了各种问题的代表性示例,而且还介绍了在分析这些问题时所使用的工具,以及这些工具的详细使用说明。无论是软件开发人员还是软件测试人员,在理解了这些示例后都将受益匪浅。” ——Daniel Mihai,软件设计工程师就职于Microsoft开发人员生产率工具(Developer Productivity Tools)部门 “我编写了WinDbg符号处理器、符号服务器以及源文件服务器。即便如此,我仍然无法教会我妻子使用WinDbg。她认为这个工具非常难用,因此并不了解这个工具的强大之处。我买了这本书送给她,这样她就可以知道如何使用WinDbg。本书中关于事后调试(Postmortem Debugging)和内存破坏等方面的内容,有效地揭示了在程序出错时的运行环境和操作系统的内部状态。Mario和Daniel在调试领域积累了丰富经验,因为他们经常被要求解决陌生程序中一些莫名其妙的问题。这也是具有工业强度的调试技术的真正意义所在。” ——Pat Styles就职于Microsoft
编辑推荐
《Windows高级调试》主要讲解Windows高级调试思想和工具,并涉及一些高级调试主题。 两位来自Microsoft的系统级开发工程师,带着他们15年的实践经验,为读者全面而系统地揭示了Windows调试技术。
图书封面
图书标签Tags
无
评论、评分、阅读与下载