包含页面文件和内存转储的 CAB 文件

内存转储文件可以与分页文件一起放置在 Cabinet (CAB) 文件中。 当 Windows 调试器分析内存转储文件时,它可以使用分页文件来显示完整视图内存,包括创建转储文件时分页的内存。

假设一个名为 MyCab.cab 的 CAB 文件包含以下文件:

Memory.dmp Cabmanifest.xml Pagefile.sys 还假设 Cabmanifest.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<WatsonPageFileManifest>
  <Pagefiles>
    <Pagefile Name="pagefile.sys"></Pagefile>
  </Pagefiles>
</WatsonPageFileManifest>

可以通过输入下列命令之一来打开 CAB 文件:

  • windbg /z MyCab.cab
  • kd /z MyCab.cab

调试器读取 Cabmanifest.xml,以获取要包含在调试会话中的页面文件列表。 在此示例中,只有一个分页文件。 调试程序将分页文件转换为可在调试会话期间使用的目标信息文件 (TIF) 文件。 因为调试器可以访问 TIF,所以它可以显示在创建转储文件时调出的内存。

无论 CAB 文件中有多少个分页文件,调试器都只使用 Cabmanifest.xml 中列出的分页文件。 下面是一个 CAB 清单文件的示例,它列出了三个分页文件。

<?xml version="1.0" encoding="UTF-8"?>
<WatsonPageFileManifest>
  <Pagefiles>
    <Pagefile Name="pagefile1.sys"></Pagefile>
    <Pagefile Name="pagefile2.sys"></Pagefile>
    <Pagefile Name="swapfile.sys"></Pagefile>
  </Pagefiles>
</WatsonPageFileManifest>

在 Cabmanifest.xml 中,分页文件的列出顺序必须与 Windows 使用它们的顺序相同。 也就是说,它们必须按照在注册表中出现的顺序列出。

放入 CAB 文件中的内存转储文件必须是完整的内存转储。 可以使用控制面板将 Windows 配置为在发生崩溃时创建完整的内存转储。 例如,在 Windows 8 中,可以转到控制面板>系统和安全>系统>高级系统设置>启动和恢复。 作为使用控制面板的替代方法,可以将此注册表项的值设置为 1。

HKLM\SYSTEM\CurrentControlSet\Control\CrashControl\CrashDumpEnabled

从 Windows 8.1 开始,可以将 Windows 配置为在 Windows 重启时保留分页文件的内容。

若要指定希望在 Windows 重启时保存分页文件,请将此注册表项的值设置为 1。

HKLM\SYSTEM\CurrentControlSet\Control\CrashControl\SavePageFileContents