如何生成转储(dmp)文件--工具篇
转储文件也就是我们常说的dump文件。可以把转储文件看成软件的某个时刻的一个快照。转储文件一般都是在软件出现问题时手动生成或者程序自动生成。下面我们介绍几种借助第三方工具生成转储文件的方法。
1. 任务管理器
任务管理器可以说是最易获取的系统工具,同时它具有生成转储文件的功能。但要注意的是在64位操作系统上面,默认启动的是64位的任务管理器。使用任务管理器生成转储文件需要遵循一个原则:用32位任务管理器给32位进程(无论该进程是运行在32位还是64位系统上面)生成转储文件,用64位任务管理器给64位进程生成转储文件。在64位系统上,32位的任务管理器位于C:\Windows\SysWOW64\taskmgr.exe
。
生成方法:右键进程 --> 创建转储文件-->弹出对话框提示生成成功,以及dmp文件位置。
类似的工具还有:Process Explorer,PCHunter等。
2. 注册表
可以通过在注册表中进行配置,让操作系统在程序崩溃时自动生成dmp文件,并放到指定位置。
在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
下面根据进程名(含.exe)新建子项,并配置如下值:
名称:DumpCount
,类型:REG_DWORD
,最大保留Dump个数,默认为10.
名称:DumpType
,类型:REG_DWORD
,Dump类型(1-Mini dump, 2-Full dump),默认为1.
名称:DumpFolder
,类型:REG_EXPAND_SZ
,Dump文件保存的位置。
3. Windbg
Windbg这么强大的调试工具当然是可以生成转储文件的,何止生成转储文件,它能做的更多。
生成方法:File-->Attach to Process-->输入.dump /ma /u d:\test.dmp
。
提示成功之后,可以在D盘看到生成dmp文件到test_0bf0_2017-08-13_23-46-37-244_11cc.dmp文件。
0bf0_2017-08-13_23-46-37-244_11cc是/u
参数附加上去的,意思是2017年08月13日 23时46分37秒244毫秒,进程PID位11cc。
.dump命令参数比较多,常用的组合就是/ma,/m
表示生成minidump,/a
表示dmp包含所有信息,/u
参数就是上面说的附加时间和PID信息到文件名。
4. Windbg -I
Windbg -I
可以将Windbg设置为及时调试器(开启了UAC的系统上面,需要以管理员权限运行),也就是我们常说的JIT调试器。设置成功之后,如遇到程序崩溃,Windbg会自动运行并附加到崩溃进程。
设置成功之后会弹出对话框。如果不想弹出对话框,可以加上S(slient首字母)Windbg -IS
.
也可以通过修改注册表项AeDebug来实现和windbg -I
同样的功能。
根据windbg位数(32/64)和系统的位数(32/64)的不同,修改的注册表项的位置也不同:
32位windbg--32位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
32位windbg--64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
64位windbg--64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
AeDebug项下面有2个值:
名称:Auto
,类型:REG_SZ
,0表示出现崩溃弹出对话框,让用户选择关闭程序还是调试程序;1表示自动弹出设置调试器。
名称:Debugger
,类型:REG_SZ
,调试器值。默认为"C:\WINDOWS\system32\vsjitdebugger.exe" -p %ld -e %ld
,设置为windbg需更改为"C:\Debuggers\WinDbg\x86\windbg.exe" -p %ld -e %ld -g
看起来挺复杂,其实挺好理解的。
5. Adplus
adplus工具位于windbg安装目录,最早叫adplus.vbs,以VBScript脚本提供,最新版改成了adplus.exe。adplus.exe不仅可以在程序崩溃时手动运行来生成dmp文件,也可以在崩溃之前就运行它,当程序崩溃时它会自动生成dmp文件;甚至可以在程序没有运行之前就先运行adplus,当程序崩溃时它会自动生成dmp文件。
如:adplus -pn powerpnt.exe -pn wincmd32.exe -hang -o c:\test
5.1 adplus用法
ADPlus <RunMode> -o <OutputDirectory> [Options]
RunMode
:-hang或-crash
-hang
附加到进程,生成dmp,然后解除附加(detach)。多用于程序卡死的情况下。
-crash
附加到进程,直到程序崩溃或者其他事件发生,生成dmp文件,然后解除附加。
5.2 常用参数(完整文档见adplus.doc文件):
-o 目录
指定生成文件存储目录。
-p 进程ID
指定进程ID,可以同时使用多次-p来指定多个进程。
-pn 进程名
指定进程名,支持通配符,也可以同时使用多次-pn来指定多个进程,但进程名必须存在,不存在则失败。
-po 进程名
和-pn类似,但-po不要求进程名必须存在。可以在进程启动之前就先启动Adplus.
-pmn 进程名
pmn为Process Monitor缩写。顾名思义,可以监视进程列表,一旦指定进程运行,则附加上去。只适用于-crash
模式。
如何生成转储(dmp)文件--工具篇的更多相关文章
- 使用VS2013分析DMP文件
当一个发布的.NET应用程序出现app crash,无法通过日志分析异常原因时,就需要通过分析DMP文件了,传统方式是通过WinDbg来分析DMP文件,但是WinDbg用起来不是很方便,其实VS就是一 ...
- 【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后 ...
- 转-【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
原帖地址:http://blog.csdn.net/lihuarongaini/article/details/71512116 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完 ...
- Windows系统上release版本程序bug跟踪解决方案-.dmp文件。
使用场景: Win32程序在release模式下编译完成,发送给最终用户使用时,我们的程序有时候也会出现崩溃的情况,这个时候如果能快速定位崩溃原因或提供一些程序崩溃时的状态信息,对我们解决问题将会带来 ...
- 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...
- DMP文件的生成和使用
1.生成dmp的程序 #include <dbghelp.h> #pragma comment(lib, "dbghelp.lib") //设置异常处理回调函数Se ...
- 服务器性能分析工具gprof的使用及没有生成gmon.out文件的原因
早上从网上查看资料时无意中看到了gprof这个工具,随便把他用在项目里试了一下.结果发现调用次数的数据比较全,但调用时间基本上都是0.网上查了一下发现gprof只记录执行时间超过0.0 ...
- SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具
Vector矢量图在Android项目中的应用越来越广泛,但是如果你想用Android Studio自带的工具将SVG图片转化成Vector资源文件却是相当麻烦,首先能支持的SVG规范较少,其次操作流 ...
- 【故障处理】IMP-00010错误 12C的dmp文件导入11G
[故障处理]IMP-00010错误 12C的dmp文件导入11G 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
随机推荐
- Excel导出百万级数据解决方案
因项目业务,需要导出百万级数据到excel,在研究了各种方案后,最终确定了用POI的SXSSFWorkbook. SXSSFWorkbook是POI3.8以上新增的,excel2007后每个sheet ...
- Ubuntu14.04安装有道词典
Ubuntu14.04安装有道词典之前要更新系统: sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade 在有道官网下载 ...
- QuartusII 13.0 PLL IP Core调用及仿真
有一个多月没用用Quartus II了,都快忘了IP 是怎么用调用的了,还好有之前做的笔记,现在整理出来,终于体会到做笔记的好处. 一. QuartusII的pll的调用 打开软件界面 Tool—— ...
- Linux基础(七)
一.nfs服务 nfs(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源.常用于Linux系统之间的文件共享. nfs在文件传送过程中依赖r ...
- java+selenium3.0 运行时出的问题(system property)!
按照之前的文章讲解,都已经搭建好了,可是在刚开始运行就报错了,代码和报错如下: WebDriver driver = new ChromeDriver(); driver.get("http ...
- spring默认欢迎页设置
简单配置的方式,直接展示静态网页,不经过Controller. web.xml 中什么没有配置任何有关欢迎页的信息!其实这时等效于如下配置:这个会由Web容器最先访问! //-未指定欢迎页时,缺省等于 ...
- Objective-C 自定义UISlider滑杆 分段样式
效果 自定义一个功能简单的分段的滑杆 可显示分段名 为了显示效果,我们将滑块和节点都设置为不规则 这里只实现了分段的slider,未分段的没有实现,有兴趣的可以定义另一种类型做个判断修改下 需求分析 ...
- idea项目上传到码云
从idea托管项目到码云相对其他软件来说是非常简单的,只要第一次下载好git插件,然后托管如下: 1. 2. 3.登陆成功后,默认会将项目所有项全选,托管成功后右下角会显示 4.当以后项目有变化时再如 ...
- NLPIR大数据挖掘平台新增敏感词扫描功能
在网络日益发达的现在,也伴随着有益信息与造成不稳定因素的信息也随之日益泛滥,为了网民的思想健康,也为了社会的和谐,在许多对外公共场合下,有些内容是要经过审查才能显示的.在网络审查初期,都是通过人工审核 ...
- Social Network Analysis的Centrality总结,以及networkx实现EigenCentrality,PageRank和KatzCentrality的对比
本文主要总结近期学习的Social Network Analysis(SNA)中的各种Centrality度量,我暂且翻译为中心度.本文主要是实战,理论方面几乎没有,因为对于庞大的SNA,我可能连门都 ...