博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
阅读量:5014 次
发布时间:2019-06-12

本文共 1485 字,大约阅读时间需要 4 分钟。

dump文件相信有些朋友已经很熟悉了,dump文件的作用在于保存进程运行时的堆栈信息,方便日后排查软件故障,提升软件质量。关于dump分析工具windbg、adplus的文章更多了,如果您还不知道怎么使用请移步:

这里接我的上篇文章:继续讲,捕捉到异常之后我们该怎么办。

一般来讲,我们想知道当时程序崩溃的相关信息,同时弹出友好对话框,当用户点击OK后关闭程序。简陋的讲就像这样:

MessageBox.Show("程序崩溃啦。。");Environment.Exit(Environment.ExitCode);

那么最关键的事情来了,怎么记录程序崩溃的相关dump信息呢?!

强势引入:。它是微软Debug Help Library库的一部分,它包含了一套支持调试程序,让您在移植可执行(PE)格式的可执行映像的工作。更多信息请移步MSDN。

调用它,您就可以直接生成Dump文件,记录程序当时的运行镜像。

它的方法API如下:

[DllImport("dbghelp.dll", EntryPoint = "MiniDumpWriteDump", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] static extern bool MiniDumpWriteDump(IntPtr hProcess, uint processId, SafeHandle hFile, uint dumpType, ref MiniDumpExceptionInformation expParam, IntPtr userStreamParam, IntPtr callbackParam);        // Overload supporting MiniDumpExceptionInformation == NULL[DllImport("dbghelp.dll", EntryPoint = "MiniDumpWriteDump", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)]static extern bool MiniDumpWriteDump(IntPtr hProcess, uint processId, SafeHandle hFile, uint dumpType, IntPtr expParam, IntPtr userStreamParam, IntPtr callbackParam);

 如何使用呢?!好吧,我知道大家都喜欢偷懒,我已经写成了类,大家直接调用一下就OK了。就像这样:

MiniDumpHelper.Write(@"C:\1.dmp", MiniDumpHelper.Option.WithFullMemoryInfo);

无图无真相,对比下未使用TopLevelEH前的程序:

 

和使用TopLevelEH后:

 

这里得提醒一下,调试模式是无效的,具体看我的。好了,接下来有了Dump文件,一切都好办了。对吧?!

源代码奉上:。

 

转载于:https://www.cnblogs.com/HouZhiHouJueBlogs/p/3949028.html

你可能感兴趣的文章
Kafka初入门简单配置与使用
查看>>
第三章Git使用入门
查看>>
Amd,Cmd, Commonjs, ES6 import/export的异同点
查看>>
cocos2dx-Lua与Java通讯机制
查看>>
上下文管理器之__enter__和__exit__
查看>>
android3.2以上切屏禁止onCreate()
查看>>
winform文件迁移工具
查看>>
delphi DCC32命令行方式编译delphi工程源码
查看>>
paip.输入法编程----删除双字词简拼
查看>>
or1200下raw-os学习(任务篇)
查看>>
ZOJ - 3939 The Lucky Week(日期循环节+思维)
查看>>
小花梨的取石子游戏(思维)
查看>>
Ubuntu 18.04安装arm-linux-gcc交叉编译器
查看>>
.net core i上 K8S(一)集群搭建
查看>>
django drf 深入ModelSerializer
查看>>
Android---Menu菜单
查看>>
【资源导航】我所用到过的工具及下载地址
查看>>
监控Tomcat
查看>>
剑指offer编程题Java实现——面试题4后的相关题目
查看>>
简单的社交网络分析(基于R)
查看>>