社区
工具平台和程序库
帖子详情
在崩溃时,如何在.NET(C#)程序下生成dump文件
bestdelpher
2010-09-13 07:58:16
我用C++实现了一个动态库,使用SetUnhandledExceptionFilter,MiniDumpWriteDump函数调用,在有空指针调用等情况导致程序崩溃时,可以将异常信息保存到dump文件中。
在使用C++编写的APP调用时。没有问题,但使用C#编写的程序调用时,却发现异常好像是被.NET给捕获了,无法保存到文件中,请问怎样解决。
...全文
1883
7
打赏
收藏
在崩溃时,如何在.NET(C#)程序下生成dump文件
我用C++实现了一个动态库,使用SetUnhandledExceptionFilter,MiniDumpWriteDump函数调用,在有空指针调用等情况导致程序崩溃时,可以将异常信息保存到dump文件中。 在使用C++编写的APP调用时。没有问题,但使用C#编写的程序调用时,却发现异常好像是被.NET给捕获了,无法保存到文件中,请问怎样解决。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bestdelpher
2010-09-14
打赏
举报
回复
谢谢老邓回复,但还是不大明白,我在DLL里实现有两个函数
mySetUnhandledException何crashtest
mySetUnhandledException实现文件转存功能,crashtest里引用一个空指针。
崩溃,捕获都是发生在我的库中,我想的是我的这个DLL对客户端程序透明,任何程序依次调用这两个函数,都能实现dump文件转存
“在C#入口,使用全局静态变量加载这个已经完成“生成dump”功能的DLL。”我只知道DLLimport的方法。
老邓
2010-09-14
打赏
举报
回复
一定要加在入口函数处!
老邓
2010-09-14
打赏
举报
回复
在C#入口,使用全局静态变量加载这个已经完成“生成dump”功能的DLL。
bestdelpher
2010-09-14
打赏
举报
回复
可能我没表达清楚,我已经在我的C++ DLL文件中实现了MiniDump,捕获动作在我DLL的函数中,这个DLL文件被C++ APP调用时可以捕获崩溃并生成DUMP文件,我现在希望在被C#程序调用时,也能捕获崩溃异常,不是要实现C#中的minidump调用
bestdelpher
2010-09-14
打赏
举报
回复
C#里的minidump调用只能跟踪到C#的代码错误在那行,我现在需要跟踪到C++里面的代码错误位置。
老邓
2010-09-13
打赏
举报
回复
网上还有很多例子啊,例如:
http://www.i-ok.net/CSharp/Articles/7voat4l7.htm
具体实现,楼主可以搜索:
http://www.google.com.hk/search?hl=zh-CN&source=hp&q=C%23+MiniDumpWriteDump&aq=f&aqi=&aql=&oq=&gs_rfai=
老邓
2010-09-13
打赏
举报
回复
http://www.111cn.net/net/33/bae2af56ee02cd99daba9a078a311107.htm
C#
异常内存信息导出
Dump
文件
背景:很多情况下
程序
崩溃
我们只能看到
程序
抛出来的异常信息,但是有
时
候异常信息不清不楚我们处理异常还是一头雾水,这种情况下我们就很希望能有种办法获取
程序
运行
时
的内存进行调试,查看其中的变量、参数、方法执行情况等信息,这里就提供一种异常
时
将
程序
的异常
时
内存信息导出到
文件
的方法,这是当初设计渲染监控日志
时
的一个初步设想,想错误内存导出保存起来帮助分析处理异常,但是与渲染的同事接触后了解到渲染
时
内存达10G,导出太占资源便放弃了,这里只抛砖引玉跟大家介绍有这种东西如有需要再进行深入研究,这种方法在C++中很常见,但在
C#
中却鲜为人知,如有这方面深入研究的同事欢迎大家留言交流。如果将来遇到异常无法调试
时
就可以考虑将目标机器上异常现场内存导出到
Dump
文件
中,然后通过
Dump
文件
操作达到分析处理异常的目的,具体关于
Dump
的操作请参看如下文章http://blog.csdn
.net
/icandoit_2014/article/details/78739962
在
.NET
程序
崩溃
时
自动创建
Dump
的思路详解
今天在浏览张队转载文章的留言
时
,遇到一个读者问了这样的问题,如下图所示: 首先能明确的一点是"
程序
崩溃
退出了是不能用常规的方式
dump
的",因为整个进程树都已经退出。现场已经无法使用常规的方式读取到。一般来说常规的方法是没办法读取到的,也有一些特殊的方式,比如有关部门在调查取证
时
,就可以通过一些工具读取到内存中的信息。当然这是一些hack手段,不在本文讨论中。不过好消息是,虽然您无法在
程序
崩溃
退出以后创建
Dump
,但是您可以在
程序
崩溃
时
自动创建
Dump
,这样下次遇到
程序
崩溃
,那么就可以有分析的现场了。在 W
Linux 磁盘与
文件
系统管理命令 < Series 8. >
Re: 《 Linux磁盘与
文件
系统管理命令 》 ---------------------------------------内容提要: 01/16)命令fdisk :磁盘分区工具02/16)命令partprobe :更新内核的硬盘分区表信息(即分区即刻生效)03/16)命令 tune2fs :调整 ext2/ext3/ext4
文件
系统参数04/16)命令 parted :磁盘分区工具(大小通吃)05/16)命令 mkfs :创建Linux
文件
系统06/16)命令
dump
e2fs :导出ext2/ext3/ext4
文件
系统信息07/16)命令 resize2fs :调整ext2/ext3/ext4
文件
系统大小08/16)命令 fsck :检查并修复Linux
文件
系统09/16)命令 dd :转换或复制
文件
10/16)命令 mount :挂载
文件
系统11/16)命令 umount :卸载
文件
系统12/16)命令 df :报告
文件
系统磁盘空间的使用情况13/16)命令 mkswap :创建交换分区14/16)命令 swapon :激活交换分区15/16)命令 swapoff :关闭交换分区16/16)命令 sync :刷新
文件
系统缓冲区17/17)附录 :NFS 网络
文件
服务器到安装;客户端的挂载 -t nfs;及新分区的权限测试 本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个
程序
员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有
时
候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手中的作战武器,平
时
不保养不理解,等到作战的
时
候,一定不能够将手中的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段
时
间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同
时
演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机中安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》
.NET
-- 使用
Dump
文件
分析异常
Dump
文件
是进程的内存镜像。主要是用来在系统中出现异常或者
崩溃
的
时
候来
生成
dump
文件
,然后用调试器进行调试,这样就可以快速定位到
程序
崩溃
位置,对问题进行排查。若将
Dump
文件
拷贝到另一台PC上调试
时
,则需要将以下3个
文件
都拷下来,放在同一目录下,必须保证pdb与出问题的exe是同一
时
间
生成
的。在代码中断
时
,调试 --> 将转储另存为 --> 设置
文件
路径&
文件
名。打开任务管理器 --> 找到对应进程 --> 右击选择创建转储
文件
。运行
Dump
Test.exe,
程序
崩溃
后,自动
生成
Dump
文件
。
.NET
程序
dump
文件
生成
方式
.NET
程序
在闪退,或者特殊异常捕获处
生成
Dump
文件
的方式
工具平台和程序库
24,855
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章