Windows高级调试

出版时间: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

评论、评分、阅读与下载


    Windows高级调试 PDF格式下载


用户评论 (总计26条)

 
 

  •   windows开发人员必备书,调试比编程更难,也更重要
  •   Windows 高级调试
  •   这本书,真的很好,windows调试 不可少的一本书,你可以学到的真的很多,软件调试 很头疼,但是提高的也很快。
    服务质量特别好,便宜 而且有发票。发货速度很好。
    对我这种网银不喜欢用的人,货到付款最适合了
  •   windows下,调试必备的工具书,听人推荐过,还没看,应该不差!!
  •   适用于需要dump分析以及高级调试的开发人员。
  •   介绍软件调试的书比较少,这本还不错,稍嫌不足的是有些部分讲的太少,例如RPC的调试,wiresharK的使用示范。
  •   适合高级调试。对于原理解释的也比较清楚。
  •   会调试的程序员才能除掉程序中影藏的bug,
  •   vc调试书中的倚天剑
  •   书已收到,印刷不错!讲解的比较到位,栈和堆那两章值得深入研究,最好亲自操作下,前面第一部分机理性比较强!后面高级部分真的是很高级的东西,windows这东西,要研究的多了去了!总体来说,感觉很不错!
  •   做运维,最害怕的就是遇到web或应用服务器不知什么原因的CPU高,MEM高;导致系统的可用性低。通过这本书介绍的如何分析memory dump文件,基本上每次都找到了根本原因。

    赞一个!
  •   这本书比较难。学习中
  •   这本书写得非常好,读后收益不浅。
  •   还没看完,好多地方看不懂
  •   该书很好,很实用.给予了我很多启发.
  •   很详细,也很实用,例子很好!
  •   从当当买专业书很多年了,值
  •   还在看这个书,最好找一个原文的版本对照着看。
  •   写的很好,但是汇编一定要过关,又买了一本汇编的再看
  •   这是一部深入探索和理解Windows调试技术的书。需要有一定的Windows操作系统基础和一定软件开发经验,没有三两三,别想过梁山。
  •   就是介绍的测试工具都是比较旧的。
  •   内容比较很懂,不适合初学者
  •   专业,受益匪浅
  •   这个是给同学带的,到货很快
  •   书籍感觉一般,不像上面的网友吹嘘的那么好,译者翻译的不是很技术,很多错误,建议大家最好是买英文原版或者影印版本,不容易被误导!
  •   微软的东西看着真闷
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7