如何正确生成 Windows 完整内存转储?

How to generate Windows complete memory dump correctly?

请找到转储示例 on Google Drive(完整转储但缺少有用信息)。平台是 Win10 x64 RS2。

我正在尝试制作完整的内存转储来分析我的应用程序。 我使用 DumpConfigurator Utility 来设置我的环境 according to MSDN. I also change the dump key to Ctrl+Space according to MS Technet

我正在尝试分析所有进程的调用堆栈,所以我需要 !process 信息。

转储生成后,我尝试使用WinDbg 来分析转储中的进程。 但是我无法通过 !process!dml_proc.

获得任何有用的信息

显示:

0: kd> !process
Error in reading nt!_EPROCESS at ffffd081a0a56040
0: kd> !dml_proc
ERROR: !dml_proc: extension exception 0x80004005.
"Unable to get type ID of 'nt!_EPROCESS'"

我想问一下为什么会这样,以及如何正确生成转储。

  • 检查并确保您的页面文件与\Windows位于同一驱动器上 (系统驱动器)并且它大于物理 RAM 的大小 机器
  • 如果在不同的驱动器上,查看专用转储驱动器 注册表设置为页面文件使用不同的驱动器(WRT 内存转储)。
  • 确保您使用的是有效的 MS public 符号

从您的内存转储来看,它似乎配置为完全转储:

内核位图转储文件:完整地址 space 可用

然而,根据各种命令的输出,罪魁祸首似乎是页面文件的大小或其位置(或两者)。请参阅上面引用的要点。