Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5179824
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: C/C++

2010-08-29 06:24:33

本文分步介绍了如何检查小存储器转储文件。使用该文件,可以确定计算机停止响应的原因。

小存储器转储文件

小存储器转储文件记录可帮助确定计算机为什么意外停止的最小的有用信息集。此选项要求启动卷上有一个至少为 2 MB 的页面文件。在运行 Microsoft Windows 2000 或更高版本的计算机上,计算机每次意外停止时 Windows 都会新建一个文件。这些文件的历史记录存储在一个文件夹中。

该转储文件类型包括以下信息:
  • Stop 消息及其参数和其他数据
  • 加载的驱动程序的列表
  • 已停止的处理器的上下文 (PRCB)
  • 已停止的进程的信息和内核上下文 (EPROCESS)
  • 已停止的进程的信息和内核上下文 (ETHREAD)
  • 已停止的线程的内核模式调用堆栈
当硬盘空间有限时,小存储器转储文件十分有用。但是,由于包括的信息有限,因此,通过分析此文件,可能无法发现并非由正在运行的线程在出现问题时直接导致的错误。

如果发生第二个问题并且 Windows 创建第二个小存储器转储文件,则 Windows 会保留以前的文件。Windows 为每个文件提供一个用日期编码的独特文件名。例如,Mini022900-01.dmp 是 2000 年 2 月 29 日生成的第一个存储器转储文件。Windows 将所有小存储器转储文件的列表保存在 %SystemRoot%\Minidump 文件夹中。

配置转储类型

要配置启动和故障恢复选项以使用小存储器转储文件,请按照下列步骤操作。

注意:由于 Microsoft Windows 有多个版本,因此下列步骤可能与在您的计算机上执行的步骤有所不同。如果是这样,请参阅您的产品文档来完成这些步骤。
  1. 单击“开始”,指向“设置”,然后单击“控制面板”。
  2. 双击“系统”。
  3. 单击“高级”选项卡,然后单击“启动和故障恢复”下的“设置”。
  4. 在“写入调试信息”列表中单击“小存储器转储 (64k)”。

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

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

您可以使用转储检查实用工具 (Dumpchk.exe) 加载小存储器转储文件,还可以使用 Dumpchk.exe 验证是否正确创建了存储器转储文件。转储检查实用工具不要求访问调试符号。Microsoft Windows 2000 支持工具和 Microsoft Windows XP 支持工具中包含有转储检查实用工具。

有关如何在 Windows 2000 和 Windows NT 中使用转储检查实用工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
  ( ) 如何使用 Dumpchk.exe 检查存储器转储文件
有关如何在 Windows XP 中使用转储检查实用工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
  ( ) 如何使用 Dumpchk.exe 检查存储器转储文件
注意:Microsoft Windows Server 2003 支持工具中包含转储检查实用工具。如果您使用的是 Microsoft Windows Server 2003,要获得转储检查实用工具,请从下面的 Microsoft Web 站点下载并安装 Windows 调试工具程序包:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
您还可以使用 WinDbg 工具或 KD.exe 工具读取小存储器转储文件。最新版本的 Windows 调试工具程序包中包含 WinDbg 和 KD.exe。
通过该 Web 页,还可以访问用于 Windows 的可下载符号程序包。要使用该资源,可以在所下载的本地符号或符号服务器使用的符号缓存将驻留的磁盘驱动器上创建一个文件夹。例如,使用 C:\Symbols。您可以将下面的符号路径与本文中介绍的所有命令一起使用:
SRV*c:\symbols*
如果将符号下载到本地文件夹中,则可以使用该文件夹的路径作为您的符号路径。

有关 Windows 中的转储文件选项的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
  ( ) Windows 2000、Windows XP 和 Windows Server 2003 存储器转储文件选项概述

安装调试工具

要下载并安装 Windows 调试工具,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
选择“典型安装”。默认情况下,安装程序会将调试工具安装在下面的文件夹中:
C:\Program Files\Debugging Tools for 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* -i c:\windows\i386 -z c:\windows\minidump\minidump.dmp
示例 2:如果您喜欢调试器的图形版本而不是命令行版本,请改为键入下面的命令:
windbg -y srv*c:\symbols* -i c:\windows\i386 -z c:\windows\minidump\minidump.dmp

检查转储文件

您可以使用多个命令收集转储文件中的信息,其中包括以下命令:
  • “!analyze -show”命令显示 Stop 错误代码及其参数。Stop 错误代码也称为“调试检查代码”。
  • !analyze -v 命令显示详细的输出内容。
  • lm N T 命令列出指定的加载模块。输出内容包括模块的状态和路径。
注意!drivers 扩展命令显示了在目标计算机上加载的所有驱动程序的列表,以及有关它们的内存使用情况的概要信息。!drivers 扩展命令在 Windows XP 和更高版本中已经过时。要显示有关所加载的驱动程序和其他模块的信息,请使用 lm 命令。lm N T 命令显示信息时所使用的格式与旧的 !drivers 扩展命令使用的格式相似。

要获取有关其他命令的帮助以及完整的命令语法,请参阅调试工具的帮助文档。在以下位置可以找到调试工具的帮助文档:
C:\Program Files\Debugging Tools for Windows\Debugger.chm
注意:如果您具有与符号相关的问题,请使用 Symchk 实用工具验证是否正确加载了正确的符号。 有关如何使用 Symchk 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
  ( ) 使用 Microsoft Symbol Server 获取调试符号文件

使用批处理文件简化命令

确定加载存储器转储时必须使用的命令后,可以创建一个批处理文件来检查转储文件。例如,创建一个批处理文件并将其命名为 Dump.bat。将它保存在安装调试工具的文件夹中。在批处理文件中键入以下文本:
cd "c:\program files\debugging tools for windows"

kd -y srv*c:\symbols* -i c:\windows\i386 -z %1
如果要检查转储文件,请键入下面的命令以将转储文件路径传递给批处理文件:
dump c:\windows\minidump\minidump.dmp
阅读(1469) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~