使用windb抓去dump文件

第一种崩溃:程序在运行中的时候,忽然弹出错误窗口,而后点错误窗口的肯定时,程序直接关闭。
  例如“应用程序错误”,“C++错误之类的窗口”,“程序无响应”,“假死”等,下图就是一个IE应用程序错误的示例图片:

这种崩溃现象的特色是:
  程序已经异常,在你未点击出错窗口的肯定或其余按钮时,全部错误信息都还保留在PC的内存中,能够直接抓取Dump文件。固然,若是你知道怎样操做可让程序崩溃,也能够用守株待兔的抓取方法去抓Dump问文件。
推荐使用抓取方法三,由于这个抓取方法能够在你看到错误时就第一时间抓取到Dump,只要出现问题时,叫人保留这个出错窗口,而后你去抓就好了。固然若是你未能及时抓取到这个Dump的话,也能够用其余方法。

第二种崩溃:程序在运行中的时候,窗口或进程忽然消失,没有任何错误窗体。
  典型的现象就是IE自动关闭,好比你连续打开几个IE窗口,关闭其中任意一个窗口时,全部IE窗口都消失了。或者玩着玩着游戏,游戏界面自动消失等。
这种崩溃现象的特色是:
  程序是自动崩溃的,当程序崩溃后,全部错误信息就都消失了,若是你要抓取这种崩溃的Dump,就必须先设置好抓取环境,不然是没法抓取到Dump文件的,所以,这种现象用方法一,方法二,方法四均可以,由于方法三是要有报错界面才抓的了,因此方法三不适用于这种现象。

  这就是目前最多见的两种程序崩溃现象,接下来和你们分享下程序Dump的方法。

抓取方法一:
该方法特色:
  一、必须指定要抓取的进程或PID,同时程序必须已经在运行,不然没法抓Dump。
  二、必须在出现问题以前,先布置好抓取环境。
  三、正常关闭进程也会出现Dump文件,所以须要肯定抓到的Dump是在程序崩溃时生成的。
第一步:下载须要使用的工具:
WinDbg:该工具是抓取Dump的主角。
工具下载1:http://115.com/file/an94sp48
工具下载2:6.12.0002.633 x86:<a href=" data-ke-src=">6.12.0002.633 x86:&lt;a href="http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi" target="_blank" rel="external">http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi</a><br/>6.12.0002.633 amd64:<a href="http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi" target="_blank" rel="external">http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi</a>

第二步:设置WinDbg抓取环境。
先运行可能存在问题的程序,例如IE,若是不先运行程序,则没法抓Dump。
而后将本站提供的WinDbg解压到任意盘符,例如C盘,使用下面的参数抓取Dump。
  网络

C:\WinDbg\adplus.vbs -crash -pn iexplore.exe -o d:


运行该命令后,WinDbg会跳出黑色窗口,用于监控进程的运行情况,注意不要关闭这个窗口噢,不然Dump就抓不到了。
WinDbg参数说明:
-crash:当程序挂掉的一刹那抓取Dump,这个参数只能抓到程序报错时的信息,若是程序不报错,则没法抓到Dump。
-hang:当开启WinDbg以后就开始抓取Dump,主要用于抓取程序中止响应,但程序未崩溃的状况,例如进程的CPU使用率100%。
详见微软知识库:http://support.microsoft.com/kb/286350/ZH-cn
(若是你搞不明白-crash和-hang的差异,那么推荐使用-crash参数。)
-pn:进程的PID或进程名,若是是进程名,会区分大小写。
-o:Dump输出路径。

第三步:收集Dump文件。
当程序崩溃后,Dump文件会保存在指定的输出路径内,例子中的Dump保存路径就是D盘了,而后打包Dump文件,提交给软件官方,供官方分析便可。

抓取方法二:
该方法特色:
  一、无需指定要抓取的进程或PID,也不要求设置环境时必须存在进程,只要任意程序崩溃后均可以抓到Dump。
  二、必须在出现问题以前,先布置好抓取环境。
  三、程序正常关闭时,好比点x时,不会生成Dump,只有程序崩溃时才会生成。
第一步:下载须要使用的工具:
WinDbg:该工具是抓取Dump的主角。
工具下载1:http://115.com/file/an94sp48
工具下载2:6.12.0002.633 x86:<a href=" data-ke-src=">6.12.0002.633 x86:&lt;a href="http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi" target="_blank" rel="external">http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi</a><br/>6.12.0002.633 amd64:<a href="http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi" target="_blank" rel="external">http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi</a>

第二步:设置WinDbg抓取环境。
将本站提供的WinDbg解压到任意盘符,例如C盘,使用下面的参数抓取Dump。
  工具

C:\WinDbg\Windbg.exe -I



运行该参数时,WinDbg会弹出一个提示,点击肯定后WinDbg界面会消失,以下图:
此时就表明环境已经设置好,如今就须要你千方百计让程序崩溃,好比让IE崩溃。

WinDbg参数说明:
-I:将WinDbg做为默认的调试工具,注意I必须为大写,小写无效。

第三步:收集Dump文件。
在程序崩溃时,WinDbg窗口再次弹出来时,使用如下命令保存Dump文件。
  spa

.dump -ma d:\test.dmp


以下图:

当开始保存Dump文件时,左下角的状态信息会变成*Busy*,表示WinDbg正在工做,Dump保存完成后会出现“Dump successfully written”这个提示,以下图:

接下来就是等Dump保存好,而后把dump文件打包提供给软件官方便可。

抓取方法三:
该方法特色:
  一、能够在程序报错后,直接抓取Dump文件,不须要额外设置,适用于忽然发现报错,且不肯定可否复现问题时抓取Dump,这是一个很是重要的抓取方法,强烈建议你们记住。
第一步:下载须要使用的工具:
ProcessExplorer:该工具是用于定位报错窗口的进程PID。
工具可在本站下载! 操作系统

WinDbg:该工具是抓取Dump的主角。
工具下载1:http://115.com/file/an94sp48
工具下载2:6.12.0002.633 x86:<a href=" data-ke-src=">6.12.0002.633 x86:&lt;a href="http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi" target="_blank" rel="external">http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi</a><br/>6.12.0002.633 amd64:<a href="http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi" target="_blank" rel="external">http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi</a>

第二步:使用ProcessExplorer报错窗口所属的进程PID(什么是PID请见文章尾部)
先运行ProcessExplorer,而后鼠标左键按住界面上的瞄准镜图标,而后拖动到报错的窗口上松开鼠标,如图:

此时,ProcessExplorer会自动定位到出错的进程上面,而后记住出错进程的PID,例以下图中QQ.exe的PID就是2960。


第三步:运行WinDbg,抓取Dump文件。
运行WinDbg后,依次点击“File”=》“Attach to a Process”,以下图:


在弹出的界面中,找到刚才捕捉到的PID,而后点OK。


点完OK后,你就会看到能够抓取Dump的界面啦,再用dump保存参数保存Dump便可。
  .net

.dump -ma d:\test.dmp


WinDbg参数说明:
-m:缺省选项,生成标准的minidump, 转储文件一般较小,便于在网络上经过邮件或其余方式传输。 这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。
-ma:带有尽可能多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但若是条件容许(本机调试,局域网环境), 推荐使用这中dump。
-mFhutwd:带有数据段、非共享的读/写内存页和其余有用的信息的minidump。包含了经过minidump可以获得的最多的信息。是一种折中方案。

抓取方法四:
该方法特色:
  一、使用系统自带的华生医生来抓取Dump,简单,可是有时会不灵光,部署的性质有点相似方法二。
第一步:下载须要使用的工具:
虽然华生医生是系统自带的工具,可是基本大部分操做系统都把这个工具给精简掉了,你们能够下载附件中的绿色版,解压后直接运行便可,运行后会把一切都设置好。
点击下载华生医生绿色版(484.87 KB)
[2012-02-12 02:27 AM; 已下载次数:170]


第二步:坐收Dump文件。
  当你运行过本站提供的drwtsn32(华生调试器).exe后,遇到程序崩溃时,会自动生成Dump文件到C:根目录,文件名为drwtsn32.log和user.dmp,把这2个文件打包提交给官方分析便可。

  至此,WinDbg很是经常使用的抓程序崩溃Dump的方法基本已经全了,但愿你们之后再碰到程序崩溃时,再也不是只提供错误截图,而是能够提供Dump供分析!
  另外,网维大师用户若是遇到IE崩溃问题,可采用以上Dump抓取方法,直接提供Dump文件给在线客服,这样可提升解决问题的效率,快速帮你们解决问题!

最后一个小知识点:什么是进程PID?
  PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程停止后PID被系统回收,可能会被继续分配给新运行的程序。
  PID一列表明了各进程的进程ID,也就是说,PID就是各进程的身份标识。
  只要没有成功运行其余程序,这个pid会继续分配给当前要运行的程序,若是成功运行一个程序,而后再运行别的程序时,系统会自动分配另外一个pid。
要查看PID的话就打开任务管理器--查看-- 选择列--PID,就能够看到了。 线程

相关文章
相关标签/搜索