.NET开发的组件异常时,如何捕获dumper文件?

 我来答
wanglian_0
2012-04-22 · TA获得超过354个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:151万
展开全部
Process Dumper - 为异常关闭的进程保存转储文件

在 Windows 系统的“启动与故障恢复”中设置“写入调试信息”,以便在 Windows 遇到蓝屏故障后通过 Debugging Tools for Windows 分析蓝屏时自动保存的内存转储文件(Crash Dump File)以排查蓝屏故障原因的方法相信很多人都非常熟悉了。详细介绍可以参考《Windows 常见蓝屏故障分析》。

除 了 Windows 蓝屏故障以外,很多应用程序进程异常关闭或停止响应的软件故障也可以通过分析转储文件加以排查。Windows 没有直接提供为应用程序保存转储文件的功能,我们可以在微软官方网站下载 User Mode Process Dumper 8.1(以下简称为 UserDump):

http://www.microsoft.com/downloads/details.aspx?FamilyID=E089CA41-6A87-40C8-BF69-28AC08570B7E&displaylang=en&displaylang=en

此工具可以监视运行中的 Win32 进程并为其保存转储文件,不会附加调试器或中止进程,而且可以监控 CSRSS.EXE、SERVICES.EXE、WINLOGON.EXE 之类系统核心进程。下载后运行 SETUP.EXE,安装内核模式驱动程序 USERDUMP.SYS、添加 USERDUMP 系统服务并在控制面板中生成 Process Dump 图标。注意在安装时要选择“Enable Dump on Process Termination Feature”复选框。

如果某应用程序进程经常异常关闭,我们可以双击控制面板中的 Process Dump 图标,在 Process Monitoring 选项卡中点击“New(新建)”,然后输入需要监控的进程名称,无需输入进程完整路径。接下来点击“Rules(规则)”按钮,为监控的进程选择错误类型 规则,在此可以选择“Select All(选择所有)”,这样当进程触发了规则中的任一条错误类型规则后,UserDump 都会自动保存转储文件。我们在此还可以设置转储文件的保存位置,默认是 Windows 文件夹,建议修改为其它位置。

如果某应用程序进程在运行时停止了响应,我们可以首先通过任务管理器记下此进程的 PID,然后以命令行方式执行 UserDump.EXE <PID> 命令以生成转储文件。

应用实例:

笔者曾经在 Windows 中运行《恐龙危机 II》游戏时遇到游戏主进程 Dino2.EXE 异常关闭的问题。游戏虽然可以正常载入并在大部分场景中正常运行,但在进入 Regina 与 Dylan 交替掩护闯异特龙巢穴的特定关卡中,只要一发射信号弹就肯定会“Dino2.EXE 遇到了问题需要关闭”。经检查,游戏的所有程序文件都没有损坏,经卸载重装游戏后问题依旧。于是笔者用 UserDump 设置了监控 Dino2.EXE 进程,重新运行游戏后,UserDump 检测到活动的 Dino2.EXE 进程并自动监控其状态,当游戏异常关闭后,相应的转储文件也保存好了。经过分析转储文件得知,Dino2.EXE 在那个特定的关卡中加载 D3DIM.DLL 时遇到了问题,D3DIM.DLL 是一个 DirectX 文件,那个特定关卡中的信号弹是需要经过特定 Direct3D 渲染的,因此才会出现游戏可以正常载入、但只要一在那个特定关卡发射信号弹就异常关闭的问题。了解故障原因后,笔者尝试重新安装显示驱动程序及 DirectX 运行时组件以修复 Direct3D 设置,重新运行游戏后问题得以解决。

Install User Mode Process Dumper (userdump)

Download User Mode Process Dumper Version 8.1 (C) Microsoft Corporation.
Extract the downloaded archive into a folder (C:\kktools\userdump8.1, by default).
Run setup.exe from the folder:

if you are using a 32 bit Windows XP / 2003, C:\kktools\userdump8.1\x86.
if you are using a 64 bit Windows XP / 2003, C:\kktools\userdump8.1\x64.

Click Next in the Setup Wizard.
(32 bit OS only) Select Disable "Dump on Process Termination" feature in the Terminate Mode window and click Next.

Then click Finish and wait for the installation to complete.
Click No in the User Mode Process Dump Setup window.

Useful references

How to get the PID (process ID) of processes running in MS Windows

Generate a process dump file

Kaspersky Anti-Virus self-defense has to be disabled before generating an avp.exe process dump file.
Click Start > Run > type cmd and press Enter.
Enter the following command: userdump PID <full_dump_file_path>. For example , if the avp.exe process PID is 3624:

userdump 3624 C:\avp.dmp

Information When generating an avp.exe process dump file, you should indicate the PID of the process running under the System account.

Press Enter.
Wait for the generation process to complete.

Check that the avp.dmp file on disk C: has been created.

Information You should attach the dump file to the Technical Support request along with a detailed description of the situation.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式