前几天分享了一个关于如何抓蓝屏Dump的帖子,今天再和大家分享一个使用WinDbg来抓取程序崩溃的Dump。有了Dump后,我们可以很迅速的解决问题,比如说IE崩溃,QQ崩溃,很多时候我们是一点头绪都没有的,但是有了WinDbg后,这一切将变的简单!虽然WinDbg并不能帮你解决问题,但是他可以指导你解决问题的方向!

今天将和大家介绍2种程序崩溃的现象4种dump抓取方法

第一种崩溃:有报错界面

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

这种崩溃现象的特点是:

程序已经异常,在你未点击出错窗口的确定或其他按钮时,所有错误信息都还保留在PC的内存中,可以直接抓取Dump文件。当然,如果你知道怎样操作可以让程序崩溃,也可以用守株待兔的抓取方法去抓Dump问文件。

推荐使用抓取方法三,因为这个抓取方法可以在你看到错误时就第一时间抓取到Dump,只要出现问题时,叫人保留这个出错窗口,然后你去抓就行了。当然如果你未能及时抓取到这个Dump的话,也可以用其他方法。

第二种崩溃:程序窗口自动消失或自动关闭

程序在运行中的时候,窗口或进程突然消失,没有任何错误窗体。典型的现象就是IE自动关闭,比如你连续打开几个IE窗口,关闭其中任意一个窗口时,所有IE窗口都消失了。或者玩着玩着游戏,游戏界面自动消失等。

这种崩溃现象的特点是:

程序是自动崩溃的,当程序崩溃后,所有错误信息就都消失了,如果你要抓取这种崩溃的Dump,就必须先设置好抓取环境,否则是无法抓取到Dump文件的,因此,这种现象用方法一,方法二,方法四都可以,因为方法三是要有报错界面才抓的了,所以方法三不适用于这种现象。

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

抓取方法一:

该方法特点:

1、必须指定要抓取的进程或PID,同时程序必须已经在运行,否则无法抓Dump。

2、必须在出现问题之前,先布置好抓取环境。

3、正常关闭进程也会出现Dump文件,因此需要确定抓到的Dump是在程序崩溃时生成的。

第一步:下载需要使用的工具:

下载Windbg:WinDbgx86版本、WinDbgx64版本:

第二步:设置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文件,提交给软件官方,供官方分析即可。

抓取方法二:

该方法特点:

1、无需指定要抓取的进程或PID,也不要求设置环境时必须存在进程,只要任意程序崩溃后都可以抓到Dump。

2、必须在出现问题之前,先布置好抓取环境。

3、程序正常关闭时,比如点x时,不会生成Dump,只有程序崩溃时才会生成。

第一步:下载需要使用的工具:

下载Windbg:WinDbgx86版本、WinDbgx64版本:

第二步:设置WinDbg抓取环境。

找到Windbg安装路径,并将windbg以“-I”参数运行,注意“I”是大写的。

C:\WinDbg\Windbg.exe -I

运行该参数时,WinDbg会弹出一个提示,点击确定后WinDbg界面会消失,如下图:此时就代表环境已经设置好,现在就需要你想方设法让程序崩溃,比如让IE崩溃。

WinDbg参数说明:

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

第三步:收集Dump文件。

在程序崩溃时,WinDbg窗口再次弹出来时,使用以下命令保存Dump文件。

.dump -ma d:\test.dmp

如下图:

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

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

抓取方法三:

该方法特点:

1、可以在程序报错后,直接抓取Dump文件,不需要额外设置,适用于突然发现报错,且不确定能否复现问题时抓取Dump,这是一个非常重要的抓取方法,强烈建议大家记住。

第一步:下载需要使用的工具:

下载ProcessExplorer:该工具是用于定位报错窗口的进程PID;
下载Windbg:WinDbgx86版本、WinDbgx64版本:

第二步:使用ProcessExplorer报错窗口所属的进程PID(什么是PID请见文章尾部)

先运行ProcessExplorer,然后鼠标左键按住界面上的瞄准镜图标,然后拖动到报错的窗口上松开鼠标,如图:

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

第三步:运行WinDbg,抓取Dump文件。

运行WinDbg后,依次点击“File”=》“Attach to a Process”,如下图:

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

点完OK后,你就会看到可以抓取Dump的界面啦,再用dump保存参数保存Dump即可。

.dump -ma d:\test.dmp

WinDbg参数说明:

-m:缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。

-ma:带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。

-mFhutwd:带有数据段、非共享的读/写内存页和其他有用的信息的minidump。包含了通过minidump能够得到的最多的信息。是一种折中方案。

抓取方法四:

该方法特点:

1、使用系统自带的华生医生来抓取Dump,简单,但是有时会不灵光,部署的性质有点类似方法二。

第一步:下载需要使用的工具:

虽然华生医生是系统自带的工具,但是基本大部分操作系统都把这个工具给精简掉了,大家可以下载附件中的绿色版,解压后直接运行即可,运行后会把一切都设置好。点击下载华生医生绿色版。

第二步:坐收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,就可以看到了。

使用WinDbg抓取程序报错的Dump文件,例如抓取IE崩溃的Dump相关推荐

  1. 使用WinDbg抓取程序报错的Dump文件

    使用WinDbg抓取程序报错的Dump文件,例如抓取IE崩溃的Dump,教程 前几天分享了一个关于如何抓蓝屏Dump的帖子,今天再和大家分享一个使用WinDbg来抓取程序崩溃的Dump.不过还是先来段 ...

  2. 小程序报错[ app.json 文件内容错误] app.json: app.json 未找到

    当你开发小程序出现这个报错说什么找不到app.json,但实际已经有了. 我百度了一阵找到了问题:微信web开发者工具在建立项目.添加项目时选择的项目目录的文件夹下不能有次级文件夹:若是有次级文件,即 ...

  3. 谷粒商城集群篇爬坑笔记--Gitee拉取项目报错、项目target文件不存在(部分项目不全)、SonarQube报错

    Gitee拉取项目报错 问题描述 Gitee拉取可能会报错: ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitExcep ...

  4. ABBYY 填坑!!!多人员调用ABBYY转换任务时,就会出现程序报错

    项目运行过程中发现ABBYY微服务经常莫名其妙死掉,后来和ABBYY技术人员沟通了解到 ABBYY转换引擎只有卸载掉,才可以进行下一次转换!!!!!!!!!! 项目运行过程中,多个人员调用ABBYY转 ...

  5. SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错

    SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错 BP,试图创建一个新的vendor code, 角色是ZGM001, Grouping是G001, ...

  6. SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析

    SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析 所在项目客户的一家工厂上线已经超过半年,其业务部门提出一个使用了半年的RF枪程序,突然不能使用了.程序直接Dump ...

  7. 【错误记录】执行 Python 程序报错 ( NameError: name ‘reload‘ is not defined )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Windows 的 cmd 命令行运行 python 脚本时 , 报如下错误 : 执行 python ApkTool.py -analyse - ...

  8. 【错误记录】PyCharm 运行 Python 程序报错 ( UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe5 in positio )

    文章目录 一.报错信息 二.解决方案 一.报错信息 PyCharm 运行 Python 程序报错 : D:\002_Project\011_Python\APK\venv\Scripts\python ...

  9. 【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: E402 module level import not at top of file )

    文章目录 一.报错信息 二.解决方案 一.报错信息 PyCharm 运行 Python 程序报错 : PEP 8: E402 module level import not at top of fil ...

最新文章

  1. mysql 单标递归_MySQL递归CTE(公共表表达式)
  2. 使用Spring MVC统一异常处理实战
  3. crtmpserver 配置说明_crtmpserver流媒体服务器的介绍与搭建
  4. 【EXLIBRIS】纸版书目整理 -- 大书架 上 【292 种】【327册】
  5. qt自定义控件_Qt编写自定义控件60-声音波形图
  6. P1160 队列安排 (模拟链表)
  7. 人工智能机器学习深度学习TensorFlow最新学习视频资料
  8. WIN10不显示sql2005服务器,win10系统安装sQLserver2005提示“sQL server服务无法启动”的设置办法...
  9. 华为交换机作为AC的条件
  10. 电气CAD批量打印为PDF笔记
  11. C语言博客作业--一二维数组
  12. 金蝶迷你版所有数据引出excel没有反应,如何处理
  13. 12306模拟登陆-超级鹰
  14. Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife
  15. 商汤科技徐立:AI 将在10 年内创造一个印度和中国的总产值
  16. 【Torch】Dataloader torch.utils.data.DataLoader全面详实概念理解
  17. servlet part对象文件上传
  18. Android开发,你必须知道的四大天王。
  19. [转载]软件测试从零开始
  20. 杰奇cms mysql查询_杰奇cms自动推送链接插件使用方式

热门文章

  1. 中国智能网联汽车技术规程-基础行车辅助测评细则
  2. photoshop android 切图插件,CutSlice me 切图神器(PhotoShop强力割图插件)
  3. AltiumDesigner 设置焊盘在钢网上是否开孔的办法
  4. echarts-折线图-echarts字体大小自适应
  5. 如何使用python自动登录路由器且获取页面内容
  6. php 生成PDF的方法之一 --mpdf使用
  7. 购物车 怎么计算总价 php,Magento购物车价格计算的功能实现代码
  8. [BZOJ2879][Noi2012]美食节(费用流)
  9. Goolge页面展示3D效果问题
  10. Kyligence 架构师:Spark tunning in Apache Kylin