我们使用Windows都知道,整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的。在大牛的作品《软件调试》 中有描述。
在Windows下,软件出错,常见的报告手段:
1、事件日志:这里记录了很多关键的错误信息
2、崩溃报告:可以自动提交错误的信息,或者手动提交,以不断的改进软件和方便排错
3、专用的日志工具:如Netmon,sysinternal等
那我们的软件在崩溃后如何处理呢?主要目的:
1、方便我们的排错
2、提供更好的使用体验
最近在设计一个应用系统时对这个问题进行处理。
这方面有比较多的参考:
首先在stackoverflow上可以看到,c++ release program crashes report
以上有比较多的框架和工具
Windows应用程序处理的一个框架和详细参考资料
Integrating Crash Reporting into Your Application - A Beginners Tutorial
http://www.codeproject.com/Articles/308634/Integrating-Crash-Reporting-into-Your-Application
http://code.google.com/p/crashrpt/
http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu
Google breakPad
Google breakpad 是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Linux和Mac和Solaris。由于他本身跨平台,所以很大的减少我们在平台移植时的工作,毕竟崩溃转储,每个平台下都不同,使用起来很难统一,而Google breakpad就帮我们做到了这一点,不管是哪个平台下的崩溃,都能够进行统一的分析。现在很多工程都在使用他:最著名的几个如Chrome,Firefox,Picasa和Google Earth。另外他的License是BSD的,也就是说,我们即便是在商业软件中使用,也是合法的http://code.google.com/p/google-breakpad/
http://bigasp.com/archives/450
调试Release发布版程序的Crash错误
http://www.cppblog.com/Walker/articles/146153.html
http://blog.sina.com.cn/s/blog_48f93b530100fsln.html
对于托管程序也有 Good crash reporting library in c#
http://stackoverflow.com/questions/49224/good-crash-reporting-library-in-c-sharp
顺便看到了这个比较有意思的内容,35个你也许不知道的Google开源项目 http://www.enet.com.cn/article/2009/1228/A20091228592251.shtml
由于我的应用 需要处理跨平台问题,因此使用了Google breakPad
顺便把整理的资料放在了skydriver上,
https://skydrive.live.com/#cid=56B433AD3D1871E3&id=56B433AD3D1871E3%21427
https://skydrive.live.com/view.aspx?cid=56B433AD3D1871E3&resid=56B433AD3D1871E3%21433