自定义错误报告(XP及以上版本)

时间:2012-04-25 10:36:28

标签: windows visual-c++ error-reporting windows-error-reporting

这个问题有点复杂。您可以随时回答您有问题的答案。

我有一项任务是在我们的几个组件的Windows异常情况下创建minidump,并支持XP SP3作为最小操作系统。组件包括:

  • 独立C ++应用
  • 要在已知浏览器中使用的CSP和PKCS11库(DLL)
  • 一个UI和一个非UI服务
  • 静态库,用于前三个点

要求是使用WER(从XP开始),但要将报告发送到专用供应商服务器而不是Microsoft当前的Winqual等效服务器。将报告功能包装在一个静态库中真的很不错。

但是有一些问题。 DLL是特殊的野兽。如果DLL代码中发生错误,如何生成报告?服务也可能需要一些特殊处理,我目前还没有意识到这一点。

首先,是否有一个已知的开源库可以帮助我完成这项任务?如果没有,我必须自己动手。

我的第一个想法是在我的每个模块中都有一个睡眠看门狗线程。该线程只等待一个事件,该事件将从unhandled exception filter设置。该线程将使用MiniDumpWriteDump生成报告,通过互联网发送然后完成,在提到的过滤器中我们将等待线程结束,然后终止该过程。对此解决方案有何看法?例如,本地系统帐户下的Windows服务可以访问互联网吗?

1 个答案:

答案 0 :(得分:1)

您不需要创建“等待异常”的线程。使用UnhandledExceptionFilter注册您自己的异常处理程序。查看this URL,可以很好地解释当发生异常时如何使用MiniDumpWriteDump。

在本地系统凭据下运行的Windows服务无法访问网络。