您的位置:首页 > 其它

通过WinDbg生成dump文件

2013-01-14 09:37 162 查看
在Windows开发环境下,通常使用Visual studio完成项目的开发以及调试,很少会用到WinDbg。WinDbg提供了强大的调试功能,在一些情况下,Visual Studio附带的调试工具无法完成调试工作,只有通过WinDbg来完成,例如,对dump文件的分析。

1. dump 文件简介

dump 文件是指内存转储文件,是系统在程序崩溃时将当前相关内存状态存储到硬盘上的文件,用于对系统崩溃的原因分析,例如操作系统的蓝屏等。可以通过注册表的方式进行设置,操作系统会根据注册表的设置来决定是否在系统崩溃时生成dump文件。在产品开发中,当自己的产品发生崩溃时,通常会生成dump文件,已供开发人员检测崩溃的原因,本文主要介绍如何通过WinDbg手动声称dump文件,用于学习如何对dump文件进行分析。

2.WinDbg下载与安装

WinDbg的下载与安装非常简单,不再介绍,这里提供一个链接

http://msdn.microsoft.com/en-us/windows/hardware/gg463009/

3.示例程序的准备

在生成dump文件之前,需要准备一个示例程序,为了便于学习,该示例程序只用来产生一个访问空指针的违例操作,如下所示:

#include "stdafx.h"

int CrashFunction(int i, int j)
{
if( i == 8 && j == 6 )
{
int *p = NULL;
int tmp = *p;   // Crash!!
return tmp;
}
else
{
return 1;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
CrashFunction(8,6);
return 0;
}


在debug模式下编译上述代码,生成可执行文件WinDbgTest.exe

4. 生成dump文件

(1)运行WinDbgTest.exe,该程序在运行后会崩溃,操作系统给出提示



(2)运行WinDbg.exe

运行WinDbg.exe,选择File->Attach to process. 在进程列表中选择WinDbgTest.exe。点击ok



(3)生成dump文件

在命令行窗口输入如下指令:

.dump /mf D:\MyCodesSymbols\WinDbgTest.dmp

该指令的含义是在D:\MyCodesSymbols目录下,生成WinDbgTest.dmp文件,该文件是最小用户模式的dump文件。



dump文件生成成功时,会提示



至此,手动生成dump文件便完成了,在今后的分析讨论过程中,均是通过这种方式产生用于我们学习分析的dump文件。

测试平台:

Visual Studio 2005, Windbg6.2.9200
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: