一、什么是Dump文件
Dump文件又叫内存转储文件或者叫内存快照文件,是进程的内存镜像。在进程崩溃时或进程有其他问题时,甚至是任何时候,我们都可以通过工具抓取系统或某进程的dump供调试分析用。dump文件中包含了程序运行的模块信息、线程信息、堆栈调用信息、异常信息等数据。当我们的应用程序发布出去,在客户机上出线了问题(崩溃、失去响应、资源消耗过高,性能不理想),由于这些问题不是发生在开发环境下的,这时我们就需要在客户机上想办法抓取dmp文件,拿回来进行分析。windows系统自己出了问题,比如蓝屏了,这时系统会自动产生dump文件,被微软收集分析。
二、Dump文件的分类
1、内核模式 Kernel-Mode DUMP:操作系统创建的崩溃转储,最经典的就是系统蓝屏
2、用户模式 User-Mode DUMP :
Full Dump:某个进程完整的地址空间数据,以及许多用于调试的信息
Mini Dump:某个线程和部分模块的信息
三、抓取Dump的方式
1、修改注册表来自动生成Dump文件
在注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps 下,添加如下信息
其中DumpType代表的含义是:
0 = Create a custom dump
1 = Mini dump
2 = Full dump
一旦某个程序崩溃,系统会在C:\CrashDump下生成一个dump文件。
2、任务管理器创建转储文件
3、使用VS进行另存转储文件
调试->附加进程->暂停按钮(全部中断)->调试->将转储另存为…
4、Windbg
File->Attach to Process->等待进程出现异常->输入命令.dump /f d:\111.dmp另存转储文件
5、还有很多种方式例如:procdump,DebugDia
,AdPlus
,gflags
等抓取Dump,就不一一介绍了,如果对哪个工具感兴趣,请自行研究。