dump基础

一、前言

DUMP:将进程或系统在某一时间点的内存信息转储为一个文件。
需要抓取dump的情况:常用于进程崩溃、卡死、卡住一段时间、系统卡死无法操作、系统蓝屏时的问题分析。

二、术语

1、转储分类

小内存转储(mini dump):只是保存内存前64K的基本内存空间的数据
核心内存转储(kernel dump):保存操作系统和相关系统级别服务的数据,系统内核态信息
完全内存转储(full dump):就是将内存中的数据全部保存,包括系统数据和用户数据,包含内核态和用户态的信息

三、具体操作

1、 如何选择是抓取dump文件

a、进程崩溃、卡死、卡住一段时间,需要进程的full dump信息
b、操作系统卡死无法操作,需要full dump信息
c、操作系统蓝屏,多数情况只需要kernel dump信息

mini dump在多数情况下都无法分析出问题的具体原因,只能初步判断问题发生时间、频次和问题可能与哪方面有关。

2、如何获取Windows操作系统的DUMP

3、如何获取进程DUMP

1)进程崩溃有弹窗

当第三方程序崩溃后,在未点击弹窗窗口上的关闭或其他按钮时,所有错误信息都还保留在主机的内存中,这时直接抓取Dump文件。

方法1

①以管理员身份运行ProcessExplorer程序,然后鼠标左键按住界面上的瞄准镜图标,然后拖动到报错的窗口或者相应进程的窗口上松开鼠标,此时,ProcessExplorer会自动定位到出错的进程上;
②然后右键点击该进程,选择"Create Dump",然后选择"Create Full Dump",选择保存的路径,产生dump文件
注意:若不是管理员运行,会提示拒绝访问。

方法2

①如有多个进程无法确定PID,参照方法1用ProcessExplorer定位一下崩溃进程的PID;
②运行WinDbg后,依次点击"File",然后选择"Attach to a Process";
③在弹出的界面中,找到刚才捕捉到的PID或者输入PID,然后点OK;
④点完OK后,你就会看到可以抓取Dump的界面了,再用dump保存参数保存Dump即可:.dump -mfh c:\xxxx.dmp

方法3

①如有多个进程无法确定PID,参照方法1用ProcessExplorer定位一下崩溃进程的PID;
②打开任务管理器,找到相应进程,右键点击,选择"创建转储文件";
③根据转储文件提示路径,提取dump文件;

方法4

适用于系统进程弹窗崩溃。
此时使用ProcessExplorer去抓取这个弹框的进程,抓这个进程的DUMP,肯定是会抓错的。这种弹框是系统进程弹的,弹框上明显的告诉了是哪个进程崩溃,直接去抓那个进程就行。

2)进程崩溃时无弹窗

此时需要使用WinDbg监控进程崩溃情况,一旦出现崩溃即刻弹窗捕获。
特点:
①无需指定要抓取的进程或PID,也不要求设置环境时必须存在进程,只要任意程序崩溃后都可以抓到Dump;
②必须在出现问题之前,先布置好抓取环境;
③程序正常关闭时,比如点关闭时,不会生成Dump,只有程序崩溃时才会生成。
步骤:
①设置WinDbg抓取环境。在“开始”—“运行”输入windbg路径:C:\WinDbg\Windbg.exe -I (注意这里是i的大写字母,不是L的小写)
②运行该参数时,WinDbg会弹出一个提示(WinDbg was successfully installed as the default postmortem debugger,),点击确定后WinDbg界面会消失。此时就代表环境已经设置好,现在就需要等进程崩溃。
③在程序崩溃时,WinDbg窗口会自动弹出来时,使用命令保存Dump文件:.dump -mfh d:\test.dmp
注意:当开始保存Dump文件时,左下角的状态信息会变成Busy,表示WinDbg正在工作,Dump保存完成后会出现“Dump successfully written”这个提示
抓取完dump好后,关闭默认调试器的设置:
对于32位操作系统:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger
对于64位操作系统:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger

在这个注册表项中,调整Auto值为0, 这里的0表示出现崩溃弹出对话框让用户选择调试器,1表示自动弹出默认的调试器。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值