CrashReport

本文介绍了CrashReport机制,一种用于在系统崩溃时收集并发送报告的方案。通过使用SEH(结构化异常处理),文章详细说明了如何重写main函数以捕获异常,并在异常发生时收集内存信息、堆栈、截图等数据。
摘要由CSDN通过智能技术生成

     来公司做的第二个小项目CrashReport,最近要提交代码了,虽然项目含金量小,但在这里做一下总结。

    CrashReport顾名思义,就是系统发生崩溃时提交报告的机制,在很多软件上都可以发生这个功能。原理就是SEH(结构化异常处理),重写main函数,在主线程中添加__try,__except块。当异常发生时,操作系统会进入异常过滤器函数,传入异常信息结构。我们在异常过滤函数里保存内存信息、堆栈、截图、用户文件、dmp文件等。然后开一个进程,把这些东西打包发送到公司的邮箱里。

     原理虽然简单,但有些细节需要考虑。

1.异常是否可处理,让程序继续运行。

2.SEH是基于线程的,对于多线程软件,如何处理各个线程。

3.操作系统不能处理的异常必须让软件挂掉

4.异常处理的顺序,注意release和debug是不同的,很多异常只在release才捕捉得到。

。。。。

 

参考资料:

《windows 核心编程》

 

《深入研究 Win32 结构化异常处理》http://vicchina.51.net/research/other/seh/crashcourse/intro.htm

 

Walking the callstack http://www.codeproject.com/KB/threads/StackWalker.aspx

《异常处理的几个办法》http://blog.csdn.net/lusuo778/archive/2010/04/08/5459071.aspx

Catch All Bugs with BugTrap!http://www.codeproject.com/KB/applications/BugTrap.aspx

XCrashReport : Exception Handling and Crash Reporting -          Part4http://www.codeproject.com/KB/debug/XCrashReportPt4.aspx

《初步了解google-breakpadhttp://www.missdeer.com/?p=736

 

 

http://www.bianceng.cn/Programming/cplus/201010/19545.htm

翻译:http://www.cnblogs.com/awpatp/archive/2010/06/15/1758763.html

http://www.cnblogs.com/feiyucq/archive/2010/05/10/1732077.html

博客:http://blog.csdn.net/chief1985/archive/2008/05/13/2443260.aspx


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值