第一图书网

.NET高级调试

Mario Hewardt 机械工业出版社
出版时间:

2011年1月  

出版社:

机械工业出版社  

作者:

Mario Hewardt  

页数:

379  

译者:

聂雪军  

Tag标签:

无  

前言

去年,我们在微软公司庆祝了CLR发布十周年。CLR的目的是通过提供一种安全的和稳定的环境来提高开发人员的生产效率。目前,CLR在各种环境中都得到了广泛应用,例如,在性能和可伸缩性上有着极高要求的大型服务器程序,以及日常使用的桌面程序等。随着CLR的日益普及,基于CLR来开发软件的人们同样面临着越来越多的挑战,因为他们的产品必须能够在不同的机器配置和网络环境中运行;此外,随着硬件的高速发展,人们正在构建的软件功能越来越强,同时复杂性也越来越高。所有这些情形都意味着,当程序没有按照预期方式运行时,你就需要负责分析和修复程序中的问题,因此了解一些调试知识和工具就显得尤为重要。为了提高工作效率,CLR为开发人员实现了许多基础的辅助机制,从而使开发人员能将主要精力放在关键逻辑上。事实上,人们无需花太多的时间来理解完整的CLR内部细节,而只需知道一些有助于分析问题的重要概念,这一点非常重要。然而,要想知道哪些概念是重要的却并不容易。许多人都是通过反复摸索之后才掌握这些知识,而这需要长时间的积累过程并且有时候可能得不到准确的答案。本书对运行时的阐述恰到好处,它能帮助你理解在分析问题时遵循的思考过程以及在解决问题时采用的各种技术,此外书中还给出了从调试实际应用程序中提炼出的许多实用技术。因此,如果你希望提高调试CLR应用程序的速度,那么应该仔细阅读本书。本书涵盖了托管程序调试的许多方面——特别是对于一些难以诊断的领域,例如线程同步问题,本书给出了深入而细致的讲解。此外,本书在说明调试技术时使用了大量的示例,使得读者更容易掌握这些技术。在本书中重点讲解的调试工具之一就是SOS调试器扩展,这个工具是由CLR小组开发和维护的。每当发布新版本的CLR时,都会对SOS进行升级,使SOS包含更多的新功能。对于分析托管进程中的问题来说,SOS是一种功能强大的工具。它提供的大部分功能都是无法从其他调试工具中获得的。例如,SOS可以找出引用托管堆中某个对象的根对象,这是托管程序开发人员经常遇到的问题之一。在熟悉了这个工具的使用后,你将可以进一步理解程序的工作流程。我还从未见过有其他的书比这本书更详细地介绍SOS。当掌握本书介绍的知识后,在分析问题时可以付出更少的时间和精力。我希望读者在阅读这本书时获得的乐趣与我在审阅本书手稿时获得的乐趣是一样的。

内容概要

这是一本介绍如何通过非托管调试器(包括WinDBG、NTSD和CDB等)来调试?NET应用程序的书籍。本书内容主要包括:调试工具简介、CLR基础、基本调试任务、程序集加载器、托管堆与垃圾收集、同步、互用性以及一些高级主题,如事后调试、一些功能强大的调试工具和.NET 4?0中的新功能等。

作者简介

作者:(美国)赫瓦特(Mario Hewardt) 译者:聂雪军 等Mario Hewardt,是微软公司的一位资深开发经理,在WirIdows系统级开发领域拥有十余年的开发经验。他目前领导开发团队负责Microosoft在线IT管理解决方案的开发。Hewardt是《Windows高级调试》(机械工业出版社2009年5月出版)的作者之一。

书籍目录

对本书的赞誉译者序序前言关于作者第一部分 简介 第1章 调试工具简介  1.1windows调试工具集  1.2.net2.0可再发行组件  1.3.net2.0sdk  1.4sos  1.5sosex  1.6clr分析器  1.7性能计数器  1.8.net反编译器  1.9powerdbg  1.10托管调试助手  1.11小结 第2章 clr基础  2.1高层概览  2.2clr和windows加载器   2.2.1加载非托管映像   2.2.2加载.net程序集  2.3应用程序域   2.3.1系统应用程序域   2.3.2共享应用程序域   2.3.3默认应用程序域  2.4程序集简介  2.5程序集清单  2.6类型元数据   2.6.1同步块表   2.6.2类型句柄   2.6.3方法描述符   2.6.4模块   2.6.5元数据标记   2.6.6eeclass  2.7小结 第3章 基本调试任务  3.1调试器以及调试目标  3.2符号  3.3控制调试目标的执行   3.3.1中断执行   3.3.2恢复执行   3.3.3单步调试代码   3.3.4退出调试会话  3.4加载托管代码调试的扩展命令   3.4.1加载sos调试器扩展   3.4.2加载sosex调试器扩展  3.5控制clr的调试  3.6设置断点   3.6.1在jit编译生成的函数上设置断点   3.6.2在还没有被jit编译的函数上设置断点   3.6.3在预编译的程序集中设置断点   3.6.4在泛型方法上设置断点  3.7对象检查   3.7.1内存转储   3.7.2值类型的转储   3.7.3转储基本的引用类型   3.7.4数组的转储   3.7.5栈上对象的转储   3.7.6找出对象的大小   3.7.7异常的转储  3.8线程的操作   3.8.1clrstack   3.8.2threads   3.8.3dumpstack   3.8.4eestack   3.8.5comstate  3.9代码审查   3.9.1反汇编代码   3.9.2从代码地址上获得方法描述符   3.9.3显示中间语言指令  3.10clr内部命令   3.10.1获得clr的版本   3.10.2根据名字找到方法描述符   3.10.3对象同步块的转储   3.10.4对象方法表的转储   3.10.5托管堆和垃圾收集器信息的转储  3.11诊断命令   3.11.1找出对象的应用程序域   3.11.2进程信息  3.12sosex扩展命令   3.12.1扩展的断点支持   3.12.2托管元数据   3.12.3栈回溯   3.12.4对象检查   3.12.5自动死锁检测   3.12.6托管堆与垃圾收集命令  3.13崩溃转储文件  3.14小结第二部分 调试实践第三部分 高级主题

章节摘录

插图:当加载私有程序集时,它通常只会局限于某个应用程序域中。根据之前对应用程序域的讨论,我们知道在一个.NET应用程序中通常会包含三个应用程序域。除了系统应用程序域和共享应用程序域之外,程序集要么是被加载到默认应用程序域中,要么是被加载到显式创建的应用程序域中。当程序集被加载到某个应用程序域时,它将停留在这个应用程序域中,直到这个应用程序域被销毁。由于程序集都是局限在某个应用程序域中,那么对于任何一个应用程序域,我们如何找出其中加载了哪些程序集?在本章的前面,我们使用了SOS的dumpdomain命令来转储出某个进程中所有的应用程序域。在dumpdomain命令的输出中包含了每个应用程序域中加载的所有程序集。清单2-3给出了在02simple.exe上执行扩展命令dumpdomain时输出的信息。我们可以看到,在默认的应用程序域中包含了两个已加载的程序集:02simple.exe和mscorlib.d11。此外,程序集的名字同样也是它们的地址。当使用SOS的dumpassembly命令来获取每个程序集的进一步信息时,需要用到这些地址。我们可以使用扩展命令dumpassembly,并将程序集的地址作为命令参数来获得更多的信息。

媒体关注与评论

“对于任何一个.NET开发人员来说,本书都具有极高的参考价值。它包含了许多调试技巧以及CLR内部工作机制的细节,这对于设计软件架构的开发人员来说是非常有益的。”  ——Jeffrey Richter,Wintellect 公司顾问,培训理由和作者“这是Mario推出的又一本好书。他之前著的《Windows高级调试》(与Daniel Pravat合著)对于非托管代码的调试来说是一本不可多得的参考书,而本书同样具有极高的质量,阐述清晰并且探讨深入,因此对于.NET’调试来说同样具有帮助作用。”  ——Mark Russinovich,微软公司技术顾问


编辑推荐

《.NET高级调试》:这是分析.NET应用程序问题方面的一本全面且实用的参考书。《.NET高级调试》首次专门且系统地介绍了如何分析当前最复杂和最具挑战性的.NET应用程序问题。这是一本介绍如何通过非托管调试器(包括WinDBG、NTSD和CDB等)来调试.NET应用程序的书籍。作者详细阐述了如何借助这些工具找出问题的真实原因——这比使用其他任何调试器都将节省大量的调试时间。作者首先介绍了在使用.NET非托管调试器时的一些关键概念。接下来介绍了许多巧妙的调试技术,并且通过真实的示例来展示各种常见的C#编程错误。读者在《.NET高级调试》中可以学到:●使用事后调试技术,包括Power DBG以及其他“强大的调试工具”。●理解在.NET CLR 4.O中包含的新调试功能以及与之前版本的差异。●掌握对Windows调试工具集、SOS、SOSEX、CLR分析器以及其他调试工具的使用。●深入理解CLR内部工作机制,例如分析线程特定的数据、托管堆和垃圾收集器、互用层以及.NET异常等。●解决一些复杂的同步问题、托管堆问题、互用性问题等。●如何生成和分析崩溃转储。

图书封面

图书标签Tags

广告

下载页面


.NET高级调试 PDF格式下载



讲的很不错。讲了不少**** 平台基础内容。像 加载CLR,元数据、GC如何工作等等,讲的很详细、易懂,不过调试需要比较好的基础知识。


****必看调试


到手后一直没时间拜读,最近上班抽空看了前几章.很都深度,需要一定的基础.看着有点吃力.需要定下心来慢慢看.


这是我最后一次在当当买东西了。


书都很值得看


对调试工作帮助很大。


正开始研读!


给老公买的,他说书不错


研究****阅读一下


写的很好有深度


系统的学习一下clr调试技术


对基础知识有要求


对于我这个不是学计算机出生的人来说,说的内容稍微的有点难。


这书还不错吧,值得购买


看看还是很有收获的啊


待我细细研究。


還不錯 就是貴了點


实用性不太大,只适用于某些特定场景


没认真的去看,只是翻了一翻~里面介绍了一些调试工具,觉得还可以


有点难度,不易看懂


书中的内容有点过时,而且 配套的 网站 已经打不开, 看样子 作者已经 放弃对这本书的 售后支持了。 书的纸张比较薄,质量相对差了点, 对不起这个价钱。


讲的很不错。讲了不少.NET 平台基础内容。像 加载CLR,元数据、GC如何工作等等,讲的很详细、易懂,不过调试需要比较好的基础知识。


没有实际用途,只能了解一下,读了以一遍,发现知道和不知道都没什么区别,建议不要购买


写的很好,很实用的书


内容较多,研究中,不便随意发表评论


同事极力推荐的,对调试技巧很有帮助


windows高级调试的.net版本


学习了,应该还可以


.NET高级调试


相关图书