我們使用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