一、前言
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示意自动弹出默认的调试器。