今天嘗試集成了CrashRpt,感覺(jué)還不錯(cuò),功能很完善,集成也很容易。http://code.google.com/p/crashrpt/
下載以后解壓縮,雖然有現(xiàn)成的Dll,EXE,但是還是建議自己編譯,因?yàn)檫@個(gè)CrashRpt需要和你程序共享一樣的vc runtime dll,否則某些異常截獲不到。
編譯很簡(jiǎn)單,有現(xiàn)成的VC 工程,支持 2005, 2008,就是需要WTL支持下載 WTL 80, http://sourceforge.net/projects/wtl/但是有一個(gè)小問(wèn)題,如果你用VC Express版本的話,那么是沒(méi)有ATL的,如果你裝的Windows Plarform SDK是2008的話,那么就徹底杯具了,也沒(méi)有ATL(在這個(gè)開(kāi)源的大時(shí)代,微軟連ATL這破東西都不舍得開(kāi)放),解決方法是安裝 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 到這里抄個(gè)例子
info.pszEmailTo = _T("myapp_support@hotmail.com"); //改成你自己的email
隨便寫個(gè)什么程序,自己弄個(gè)crash出來(lái),注意,需要把下列文件復(fù)制到你的程序的exe目錄
CrashRpt.dll
CrashSender.exe
dbghelp.dll
crashrpt_lang.ini
好了,測(cè)試下吧,應(yīng)該會(huì)提示程序崩潰,是否發(fā)送crash log的對(duì)話框。如果發(fā)送,那么會(huì)在email里收到一個(gè)zip文件,和一個(gè)zip的md5校驗(yàn)碼。
這個(gè)zip文件里包含有crashdump.dmp 和 crashrpt.xml, xml只是些信息,dmp是Crash dump可以用vc直接打開(kāi),如果你有源代碼和所有符號(hào)表,那么就能還原當(dāng)時(shí)崩潰的現(xiàn)場(chǎng)。