如何分析dump文件

菏泽区号2023-04-27  23

1、 打开Dump格式文件

打开WinDbg,通过菜单[File] à [Open Crash dump] 选择dump文件打开,也可通过CMD打开Dos命令窗口,切换到WinDbg所在目录,利用命令:

WinDbg –z “D:/Lines2009-7-25-22-20-33-900dmp”

-z表示路径

图11 利用WinDbg打开dump文件

本文编写了一个简单能产生除数为0异常的程序,让其运行,产生崩溃,通过drwtsn产生dmp文件,然后通过windbg分析dmp文件,定位程序bug。

目的:学习windbg基本功能使用。

程序源代码:

void Crash(void)

{

int i = 1;

int j = 0;

i /= j;

}

void main(void)

{

Crash();

}

编译环境:vc++60

编译器设置:

这一步设置,要求对release版本不使用优化,如果使用优化,上面源代码中Crash(void)函数将不被汇编。

这一步设置,产生release版本的调试符号表,为后续定位错误准备。

1、 打开Dump格式文件

打开WinDbg,通过菜单[File] à [Open Crash dump] 选择dump文件打开,也可通过CMD打开Dos命令窗口,切换到WinDbg所在目录,利用命令:

WinDbg –z “D:/Lines2009-7-25-22-20-33-900dmp”

-z表示路径

图11 利用WinDbg打开dump文件

本文编写了一个简单能产生除数为0异常的程序,让其运行,产生崩溃,通过drwtsn产生dmp文件,然后通过windbg分析dmp文件,定位程序bug。

目的:学习windbg基本功能使用。

程序源代码:

void Crash(void)

{

int i = 1;

int j = 0;

i /= j;

}

void main(void)

{

Crash();

}

编译环境:vc++60

编译器设置:

这一步设置,要求对release版本不使用优化,如果使用优化,上面源代码中Crash(void)函数将不被汇编。

这一步设置,产生release版本的调试符号表,为后续定位错误准备。

临时内存dump文件。tmp是Temporary的缩写,是临时的意思,dump3a32tmp是操作系统或者应用软件运行时崩溃后保存的临时内存dump文件。文件是Windows中信息组成的基本单位,是各种程序与信息的集合。

wpf生成dump具体方法介绍如下:

现在我准备创建一个简单的 winform 程序,在 button 事件中故意让主线程sleep造成程序假死,参考代码如下:

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ThreadSleep(1000 10); MessageBoxShow("clicked me!"); } }

接下来启动 cmd 窗口,输入:

C:\Windows\system32>procdump -ma -h -w WindowsFormsApp1exe E:\net5\hungwindowdmp ProcDump v100 - Sysinternals process dump utility Copyright (C) 2009-2020 Mark Russinovich and Andrew Richards Sysinternals - >

dmp文件是系统错误的内存转储文件。当电脑蓝屏或系统崩溃时,Windows会将错误报告存储在一个后缀名为“DMP”的文件里。该文件记录了系统错误的详细信息,技术人员可以分析它找到系统崩溃的原因,从而解决问题。分析dmp文件的步骤如下:

1、首先我们要找到dump文件,dump文件则是记录了蓝屏之前数据在内存中的情况。

2、然后在“我的电脑”图标上右键“属性”打开系统属性,可在启动和故障恢复中找到dmp文件。

3、dump文件需要微软专门的分析工具,需要自行下载安装,下载后,点击下载的文件运行安装。

4、一直点“下一步”默认安装即可。安装后,在启动菜单找到启动程序,运行起来。

5、然后运行分析工具

6、在分析前我们先要做个简单的设置

7、会弹出如下提示,我们在文本框输入:srvD:mwin7symbolsx86>

8、然后点击File菜单目录下的点击OpenCrashDump菜单项,选择你所要分析的dmp文件。

9、然后就会对dmp文件进行分析了。

dumps文件完全可以删除,dumps文件夹下的dump文件只用于分析错误,如果不需要,那么删除即可。

dumps这个文件夹是保存了系统日志的,主要用于保存系统错误、程序错误时的日志文件,每一次有程序崩溃都会在Dumps文件夹下生成一个dmp格式的文件,大小各不一,有些文件一个就好几百兆。

删除方法如下:

1、右键点击此电脑,然后选择属性。

2、打开后点击高级系统设置。

3、选择启动和故障回复—设置。

5、取消将时间写入系统日志,确定保存就可以了,以后就不会生成DMP文件。

1 进到 Control Panel --> System --> Advanced --> Startup/Recovery,请选complete memory dump并选中System Failure下的所有选项。请记住memorydmp文件存放的位置,默认情况下此文件存放在%systemroot%下。请确认memorydmp文件的存放路径下有足够的空间,即剩余空间大于等于物理内存的大小。如果默认目录下没有足够的空间,请把路径指定到有足够空间的分区的根目录下。

2 进到Control Panel --> System --> Advanced --> Performance Options --> Change。请确定pagefile是放在%systemroot%分区的。pagefile的大小需设置成比物理内存大,如,机器内存为1G,可以把pagefile文件的大小设成1100M。如果系统提示要重新启动服务器,请暂时不要重启。

3 添加注册表键值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

Value Name: CrashOnCtrlScroll

Data Type: REG_DWORD

Value: 1

4 重启计算机使设置生效。

5 在问题再次发生时按住键盘右边的Ctrl键不放,再按两次ScrollLock键。如果设置正确,机器会立刻进入蓝屏,并开始将内存快照写入页面文件。您可以看到其完成进度。待其完成后,机器将会自动重启,并在重启后产生一个内存转储文件在 c:\windows\memorydmp。

6 对于某些笔记本没有右Ctrl键,可以通过导入附件的注册表文件来实现由左Ctrl操作产生Dump文件。

以上就是关于如何分析dump文件全部的内容,包括:如何分析dump文件、怎样解析dump文件、dump3a32.tmp什么文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:https://juke.outofmemory.cn/read/3701237.html

最新回复(0)