发生崩溃时如何读取 Windows 创建的小型内存转储文件

本文介绍如何检查小型内存转储文件。 小型内存转储文件可以帮助你确定计算机失败的原因。

适用于 所有受支持的 Windows 客户端和 Windows Server 版本

原始 KB 编号: 315263

注意

如果要查找 Windows 8 或更高版本的调试信息,请参阅调试 Windows (WinDbg、KD、CDB、NTSD) 工具。 有关小型内存转储的详细信息,请参阅 小型内存转储

小型内存转储文件

如果计算机出现故障,如何确定发生的情况、修复问题并防止再次发生? 在这种情况下,你可能会发现小内存转储文件很有用。 小内存转储文件包含的有用信息量最少,有助于确定计算机失败的原因。 内存转储文件包含以下信息:

  • Stop 消息、其参数和其他数据
  • 已加载驱动程序的列表
  • 停止的处理器的处理器上下文 (PRCB)
  • 已停止进程的进程信息和内核上下文 (EPROCESS)
  • 停止的线程的进程信息和内核上下文 (ETHREAD)
  • 已停止的线程的内核模式调用堆栈

若要创建内存转储文件,Windows 需要在启动卷上提供至少 2 MB (MB) 的分页文件。 在运行 Microsoft Windows 2000 或更高版本的 Windows 的计算机上,每次发生计算机故障时,都会创建一个新的内存转储文件。 这些文件的历史记录存储在文件夹中。 如果发生第二个问题,并且 Windows 创建了第二个小型内存转储文件,则 Windows 将保留上一个文件。 Windows 为每个文件提供不同的日期编码文件名。 例如, Mini022900-01.dmp 是 2000 年 2 月 29 日生成的第一个内存转储文件。 Windows 将所有小型内存转储文件的列表保留在 %SystemRoot%\Minidump 文件夹中。

如果硬盘空间有限,小型内存转储文件可能很有用。 但是,由于包含的信息有限,因此分析此文件可能无法发现不是由问题发生时运行的线程直接引起的错误。

配置转储类型

若要配置启动和恢复选项以使用小型内存转储文件,请执行以下步骤。

注意

根据你的 Windows 版本,你的计算机上的以下步骤可能有所不同。 如果它们不同,请参阅产品文档以完成这些步骤。

  1. 选择“开始”>“控制面板”

  2. 双击“ 系统”,然后选择“ 高级系统设置>高级”。

  3. “启动和恢复”下,选择 “设置”。

  4. “写入调试信息 ”列表中,选择“ 小型内存转储 (256k) ”。

    “启动和恢复”窗口中“写入调试信息”列表中的“小内存转储 (256k) ”选项的屏幕截图。

若要更改小型内存转储文件的文件夹位置,请在“ 转储文件 ”框或“ 小型转储目录 ”框中键入新路径, (具体取决于你的 Windows) 版本。

用于读取小内存转储文件的工具

使用转储检查实用工具 (Dumpchk.exe) 读取内存转储文件或验证是否已正确创建文件。

注意

转储检查实用工具不需要访问调试符号。 符号文件包含运行二进制文件时实际不需要的各种数据。 但是,此数据在调试中可能非常有用。

有关如何在 Windows NT、Windows 2000、Windows Server 2003 或 Windows Server 2008 中使用转储检查实用工具的详细信息,请参阅使用 Dumpchk.exe 检查内存转储文件

有关如何在 Windows XP、Windows Vista 或 Windows 7 中使用转储检查实用工具的详细信息,请参阅如何使用 Dumpchk.exe 检查内存转储文件

或者,可以使用 Windows 调试器 (WinDbg.exe) 工具或内核调试器 (KD.exe) 工具读取小型内存转储文件。 WinDbg.exeKD.exe 包含在最新版本的 Windows 调试工具包中。

若要安装调试工具,请参阅 下载并安装 Windows 调试工具 网页。 选择“ 典型 安装”。 默认情况下,安装程序会在以下文件夹中安装调试工具:

C:\Program Files\Debugging Tools for Windows

工具网页还提供对适用于 Windows 的可下载符号包的访问权限。 有关 Windows 符号的详细信息,请参阅 使用符号调试下载 Windows 符号包 网页。

有关 Windows 中的转储文件选项的详细信息,请参阅 Windows 的内存转储文件选项概述

打开转储文件

若要在安装完成后打开转储文件,请执行以下步骤:

  1. 选择“ 开始>运行”,键入 cmd,然后选择“ 确定”。

  2. 更改为“ Windows 调试工具” 文件夹。 为此,请在命令提示符处键入以下内容,然后按 Enter:

    cd C:\Program Files\Debugging Tools For Windows
    
  3. 若要将转储文件加载到调试器中,请键入以下命令之一,然后按 Enter:

    windbg -y SymbolPath -i ImagePath -z DumpFilePath
    
    kd -y SymbolPath -i ImagePath -z DumpFilePath
    

下表说明了这些命令中使用的占位符的用法。

占位符 解释
SymbolPath 下载符号文件的本地路径或符号服务器路径(包括缓存文件夹)。 由于小型内存转储文件包含有限的信息,因此必须将实际的二进制文件与符号一起加载,才能正确读取转储文件。
ImagePath 这些文件的路径。 这些文件包含在 Windows XP CD-ROM 上的 I386 文件夹中。 例如,路径可以是 C:\Windows\I386
DumpFilePath 正在检查的转储文件的路径和文件名。

示例命令

可以使用以下示例命令打开转储文件。 这些命令假定以下内容:

  • Windows CD-ROM 上的 I386 文件夹的内容将复制到 C:\Windows\I386 文件夹中。
  • 转储文件名为 C:\Windows\Minidump\Minidump.dmp

示例 1 (命令行) :

kd -y srv*C:\Symbols*https://msdl.microsoft.com/download/symbols -i C:\Windows\i386 -z C:\Windows\Minidump\minidump.dmp

示例 2 (图形 UI) 。 如果首选调试器的图形版本而不是命令行版本,请改为键入以下命令:

windbg -y srv*C:\Symbols*https://msdl.microsoft.com/download/symbols -i C:\Windows\i386 -z C:\Windows\Minidump\minidump.dmp

检查转储文件

可以使用多个命令在转储文件中收集信息,包括以下命令:

  • 命令 !analyze -show 显示 Stop 错误代码及其参数。 停止错误代码也称为 bug 检查代码。
  • 命令 !analyze -v 显示详细输出。
  • 命令 lm N T 列出指定的已加载模块。 输出包括模块的状态和路径。

注意

在较旧版本的 Windows (预交 Windows XP) !drivers 扩展命令显示目标计算机上加载的所有驱动程序的列表,以及有关其内存使用情况的摘要信息。 但是, !drivers 扩展命令在 Windows XP 和更高版本中已过时。 若要显示有关加载的驱动程序和其他模块的信息,请使用 lm 命令。 命令 lm N T 以类似于旧 !drivers 扩展的格式显示信息。

有关其他命令的帮助和完整的命令语法,请参阅调试工具帮助文档。 可在以下位置找到调试工具帮助文档:

C:\Program Files\Debugging Tools for Windows\Debugger.chm

注意

如果遇到与符号相关的问题,请使用 Symchk 实用工具验证是否正确加载了正确的符号。 有关如何使用 Symchk 的详细信息,请参阅 使用符号调试

使用批处理文件简化命令

确定用于加载内存转储的命令后,可以创建批处理文件来检查转储文件。 例如,创建批处理文件并将其命名 为Dump.bat。 将其保存在安装调试工具的文件夹中。 在批处理文件中键入以下文本:

cd "C:\Program Files\Debugging Tools for Windows"

kd -y srv*C:\Symbols*https://msdl.microsoft.com/download/symbols -i C:\Windows\i386 -z %1

如果要检查转储文件,请键入以下命令,将转储文件路径传递到批处理文件:

dump C:\Windows\Minidump\minidump.dmp