在Windows Server 2003中如何创建一个进程的内存转储?

8

自从Windows Vista以来,我们就有了在任务管理器中直接创建进程内存转储的好选择。可惜的是,Windows Server 2003目前还没有这个选项:( 我找到了一些方法来进行完整的系统范围内存转储,但那有点太多了。

有没有办法转储单个进程呢?由于这是一个生产服务器,我不想安装任何重量级工具或后台运行的服务,最理想的情况是只需转储进程,将其复制到我的机器上并在那里进行调试。

4个回答

7
你可以将Windows调试器(ntsd或windbg)附加到进程上,然后当你想要创建该进程的转储时,可以使用.dump命令:
0:000> .dump /ma myprocess-crash.dmp
Creating myprocess-crash.dmp - mini user dump
Dump successfully written
0:000>

谢谢。我选择了另一个选项,以避免安装windbg。 - Michael Stum

5

3

我认为这个“答案”应该是jeffamaphone的答案下的评论,但是我没有足够的声望来评论。

Windows Server 2003附带ntsd,因此无需安装任何内容。获取进程的进程ID,并将ntsd附加到该进程:

C:> ntsd -p 4356

然后使用ntsd来转储进程:

.dump /f c:\MyDumpFiles\foo.dmp

1
不要忘记来自sysinternals.com的procdump(自几年前微软收购他们以来重定向到MS)。非常小的下载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接