《.NET高级调试》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)赫瓦特著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2011
  • ISBN:9787111320852
  • 页数:382 页
图书介绍:本书是第一本关注于追踪当今最复杂的和最有挑战性的.NET应用程序Bug的实用指南。它完整地介绍了使用最强大的本地调试工具,包括WinDBG、NTSD、和CDB来调试.NET应用程序。通过这些工具,作者介绍了如何识别引发问题的根本原因,这比使用其他调试工具发现问题要快很多。首先,本书介绍了成功地使用.NET本地调试器所需的关键概念。接下来,介绍了高级的调试技巧,使用真实世界的例子来说明很多常见的C#编程错误。本书是畅销图书《Windows高级调试》的姊妹篇。本书作者也是《Windows高级调试》的作者。

第一部分 简介 1

第1章 调试工具简介 1

1.1 Windows调试工具集 1

1.2 NET 2.0可再发行组件 2

1.3 NET 2.0 SDK 3

1.4 SOS 5

1.5 SOSEX 7

1.6 CLR分析器 8

1.7 性能计数器 9

1.8 NET反编译器 11

1.9 PowerDbg 11

1.10 托管调试助手 12

1.11 小结 15

第2章 CLR基础 16

2.1 高层概览 16

2.2 CLR和Windows加载器 18

2.2.1 加载非托管映像 19

2.2.2 加载NET程序集 21

2.3应用程序域 24

2.3.1系统应用程序域 27

2.3.2共享应用程序域 27

2.3.3默认应用程序域 27

2.4程序集简介 27

2.5程序集清单 29

2.6类型元数据 30

2.6.同步块表 36

2.6.2类型句柄 40

2.6.3方法描述符 45

2.6.4模块 47

2.6.5元数据标记 49

2.6.6 EEClass 50

2.7小结 52

第3章 基本调试任务 53

3.1调试器以及调试目标 53

3.2符号 57

3.3控制调试目标的执行 59

3.3.1中断执行 59

3.3.2恢复执行 60

3.3.3单步调试代码 62

3.3.4退出调试会话 65

3.4加载托管代码调试的扩展命令 66

3.4.1加载SOS调试器扩展 66

3.4.2加载SOSEX调试器扩展 69

3.5控制CLR的调试 69

3.6设置断点 69

3.6.1在JIT编译生成的函数上设置断点 72

3.6.2在还没有被JIT编译的函数上设置断点 74

3.6.3在预编译的程序集中设置断点 76

3.6.4在泛型方法上设置断点 79

3.7对象检查 80

3.7.1内存转储 82

3.7.2值类型的转储 84

3.7.3转储基本的引用类型 90

3.7.4数组的转储 91

3.7.5栈上对象的转储 96

3.7.6找出对象的大小 98

3.7.7异常的转储 98

3.8线程的操作 102

3.8.1 ClrStack 103

3.8.2 Threads 106

3.8.3 DumpStack 109

3.8.4 EEStack 111

3.8.5 COMState 111

3.9代码审查 112

3.9.1反汇编代码 112

3.9.2从代码地址上获得方法描述符 113

3.9.3显示中间语言指令 114

3.10 CLR内部命令 115

3.10.1获得CLR的版本 115

3.10.2根据名字找到方法描述符 115

3.10.3对象同步块的转储 116

3.10.4对象方法表的转储 116

3.10.5托管堆和垃圾收集器信息的转储 116

3.11诊断命令 117

3.11.1找出对象的应用程序域 117

3.11.2进程信息 117

3.12 SOSEX扩展命令 118

3.12.1扩展的断点支持 119

3.12.2托管元数据 122

3.12.3栈回溯 123

3.12.4对象检查 124

3.12.5自动死锁检测 125

3.12.6托管堆与垃圾收集命令 126

3.13崩溃转储文件 128

3.14小结 130

第二部分 调试实践 131

第4章 程序集加载器 131

4.1 CLR加载器简介 131

4.1.1程序集标识 132

4.1.2全局程序集缓存 135

4.1.3默认加载上下文 137

4.1.4指定加载上下文 138

4.1.5无加载上下文 139

4.2简单的程序集加载故障 139

4.3加载上下文故障 144

4.4互用性与DllNotFoundException 153

4.5轻量级代码生成的调试 154

4.6小结 158

第5章 托管堆与垃圾收集 159

5.1 Windows内存架构简介 159

5.2垃圾收集器的内部工作机制 167

5.2.1代 168

5.2.2根对象 175

5.2.3终结操作 181

5.2.4回收GC内存 189

5.2.5大对象堆 190

5.2.6固定 195

5.2.7垃圾收集模式 200

5.3调试托管堆的破坏问题 200

5.4调试托管堆的碎片问题 207

5.5小结 230

第6章 同步 231

6.1同步的基础知识 231

6.2线程同步原语 231

6.2.1事件 235

6.2.2互斥体 237

6.2.3信号量 238

6.2.4监视器 239

6.2.5读写锁 240

6.2.6线程池 241

6.3同步的内部细节 241

6.3.1对象头 242

6.3.2同步块 243

6.3.3瘦锁 246

6.4同步任务 249

6.4.1死锁 249

6.4.2孤立锁:异常 256

6.4.3线程中止 261

6.4.4终结器挂起 264

6.5小结 271

第7章 互用性 272

7.1平台调用 272

7.2 COM 278

7.3 P/Invoke调用的调试 282

7.3.1调用约定 282

7.3.2委托 286

7.4互操作中内存泄漏问题的调试 293

7.5COM互用性中终结操作的调试 298

7.6小结 306

第三部分 高级主题 307

第8章 事后调试 307

8.1转储文件基本知识 308

8.1.1通过调试器来生成转储文件 309

8.1.2通过ADPlus生成转储文件 314

8.1.3转储文件的调试 316

8.1.4数据访问层 317

8.1.5转储文件分析:未处理的NET异常 319

8.2 Windows错误报告 320

8.3小结 344

第9章 一些功能强大的调试工具 345

9.1 PowerDbg 345

9.1.1 安装PowerDbg 345

9.1.2 Analyze-PowerDbgThreads 347

9.1.3 Send-PowerDbgCommand 348

9.1.4 扩展PowerDbg的功能 350

9.2 Visual Studio 352

9.2.1 SOS的集成 352

9.2.2 NET框架源代码级调试 355

9.2.3 Visual Studio 2010 358

9.3 CLR分析器 361

9.3.1 运行CLR分析器 362

9.3.2 Summary视图 363

9.3.3 Histogram视图 364

9.3.4 Graph视图 366

9.4 WinDbg和CmdTree命令 367

9.5小结 368

第10章 CLR 4.0 369

10.1 工具 369

10.1.1 Windows调试工具集 369

10.1.2 NET 4.0可再发行组件 369

10.1.3 SOS 370

10.2托管堆与垃圾收集 370

10.2.1扩展的诊断信息 370

10.2.2后台垃圾收集 374

10.3同步 375

10.3.1线程池与任务 375

10.3.2监视器 376

10.3.3栅栏 377

10.3.4 CountdownEvent 377

10.3.5 ManualResetEventSlim 377

10.3.6 SemaphoreSlim 377

10.3.7 SpinWait和SpinLock 377

10.4互用性 378

10.5事后调试 379

10.6小结 379