今天嘗試集成了CrashRpt,感覺還不錯,功能很完善,集成也很容易。http://code.google.com/p/crashrpt/
下載以后解壓縮,雖然有現成的Dll,EXE,但是還是建議自己編譯,因為這個CrashRpt需要和你程序共享一樣的vc runtime dll,否則某些異常截獲不到。
編譯很簡單,有現成的VC 工程,支持 2005, 2008,就是需要WTL支持下載 WTL 80, http://sourceforge.net/projects/wtl/但是有一個小問題,如果你用VC Express版本的話,那么是沒有ATL的,如果你裝的Windows Plarform SDK是2008的話,那么就徹底杯具了,也沒有ATL(在這個開源的大時代,微軟連ATL這破東西都不舍得開放),解決方法是安裝 2003版本的SDK,如果你能找到的話,或者找別人copy一份ATL ,就在SDK\include\atl目錄下。http://www.shnenglu.com/Files/stevenyao/atl.7z 我自己打包了一份ATL,希望微軟不要告我。。。
然后,http://crashrpt.sourceforge.net/docs/html/simple_example.html 到這里抄個例子
info.pszEmailTo = _T("myapp_support@hotmail.com"); //改成你自己的email
隨便寫個什么程序,自己弄個crash出來,注意,需要把下列文件復制到你的程序的exe目錄
CrashRpt.dll
CrashSender.exe
dbghelp.dll
crashrpt_lang.ini
好了,測試下吧,應該會提示程序崩潰,是否發送crash log的對話框。如果發送,那么會在email里收到一個zip文件,和一個zip的md5校驗碼。
這個zip文件里包含有crashdump.dmp 和 crashrpt.xml, xml只是些信息,dmp是Crash dump可以用vc直接打開,如果你有源代碼和所有符號表,那么就能還原當時崩潰的現場。