1

这是一个有点复杂的问题,有几个问题。随意只回答您有答案的问题。

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

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

要求是拥有类似 WER(从 XP 开始)之类的东西,但是将报告发送到专用供应商服务器,而不是 Microsoft 当前的 Winqual 等效服务器。如果可以将报告功能包装在一个静态库中,那就太好了。

不过也有问题。DLL 是特殊的野兽。仅当 DLL 代码中发生故障时如何生成报告?服务可能还需要一些特殊处理,我目前不知道。

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

我的第一个想法是在我的每个模块中都有一个睡眠看门狗线程。该线程只是等待一个事件,该事件将从未处理的异常过滤器中设置。该线程将使用MiniDumpWriteDump生成报告,通过互联网发送它然后完成,在提到的过滤器中,我们将等待线程结束,然后终止进程。对此解决方案有任何想法吗?比如本地系统账户下的Windows服务能不能上网?

4

1 回答 1

1

您不需要创建“等待异常”的线程。只需使用 UnhandledExceptionFilter 注册您自己的异常处理程序。看这个网址,很好的解释了当异常发生时如何取MiniDumpWriteDump。

在本地系统凭据下运行的 Windows 服务没有网络访问权限。

于 2012-05-08T12:20:28.393 回答