今天尝试集成了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.cppblog.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直接打开,如果你有源代码和所有符号表,那么就能还原当时崩溃的现场。