2024年6月15日发(作者:)

IIS 调试技术之 Debug Diagnostic (调试诊断)

系统出现错误或崩溃,免不了要进行调试。调试能进行的前提是错误能重现,但实际上要重现一个

错误有时比重新设计代码还困难,所以在错误出现之时,能够及时把系统状态记录下来是当务之急,即

我们所说的抓取 DUMP (内存转储文件)。

如何抓取 DUMP?相信不少同学都已经知道了,使用 WinDbg 或 Debug Diagnostic Tool 抓

取。

如何自动抓取 DUMP?具体的说,就是当特定异常发生时如何自动抓取 DUMP。这个问题使用

WinDbg 解决会有点困难,但是使用 Debug Diagnostic Tool 却是非常容易。

先介绍一下 Debug Diagnostic Tool,相信有不少同学已经用过它抓取 DUMP,不过基本都是手

动选取进程抓取。

此工具常用的功能主要有两个:抓取 DUMP 和分析 DUMP。另外,它还可以附加到进程进行调

试,或是监视内存和句柄的泄漏。

与 WinDbg 相比,Debug Diagnostic Tool 的分析功能实在不怎么样,不过它定制抓取 DUMP

的功能却是 WinDbg 所不能比的。下面我们就来看看如何使用 Debug Diagnostic Tool 抓取

DUMP。

1. 手动抓取 DUMP

对于只有一个应用程序池的 IIS 来说,我们只要在 Debug Diagnostic Tool 中的 Processes 标

签页中找到进程名为“”的进程,然后右键选择“Create Full Userdump”即可。

第 1 页 共 6 页

不过通常情况下,我们会用应用程序池把不同的站点和虚拟目录分开,这时系统里会有多个名为

“”的进程。我们可以在命令提示符下执行“iisapp”,得到进程 ID 与应用程序池的对应关

系,然后在 Debug Diagnostic Tool 中根据进程 ID 选取要抓取 DUMP 的进程。

第 2 页 共 6 页