提问人:Dialecticus 提问时间:4/25/2012 最后编辑:Alexey FrunzeDialecticus 更新时间:5/8/2012 访问量:165
自定义错误报告(XP 及更高版本)
Custom error reporting (XP and above)
问:
这是一个有点复杂的问题,有几个问题。请随时只回答您有答案的问题。
我的任务是为我们的几个组件创建小型转储,以防 Windows 异常,并支持 XP SP3 作为最小操作系统。 组件包括:
- 独立 C++ 应用
- 将在已知浏览器中使用的 CSP 和 PKCS11 库 (DLL)
- 一个 UI 和一个非 UI 服务
- 静态库,在前面的所有三点中都使用
要求是具有类似 WER(从 XP 开始)的东西,但将报告发送到专用的供应商服务器,而不是 Microsoft 当前的 Winqual 等效服务器。报告功能可以包装在一个静态库中,这真是太好了。
不过,也存在一些问题。DLL是特殊的野兽。如何仅在DLL代码中发生错误时生成报告?服务可能还需要一些特殊处理,我目前还不知道。
首先,有没有一个已知的开源库可以帮助我完成这个任务?如果没有,我就得自己卷。
我的第一个想法是在我的每个模块中都有一个休眠的看门狗线程。此线程仅等待一个事件,该事件将从未经处理的异常过滤器中设置。线程将使用 MiniDumpWriteDump 生成报告,通过 Internet 发送报告,然后完成,在上述过滤器中,我们将等待线程结束,然后终止进程。对这个解决方案有什么想法吗?例如,本地系统帐户下的 Windows 服务可以访问互联网吗?
答:
1赞
mox
5/8/2012
#1
您无需创建“等待异常”的线程。只需使用 UnhandledExceptionFilter 注册自己的 Exception 处理程序即可。看看这个URL,它很好地解释了在发生异常时如何采取MiniDumpWriteDump。
在本地系统凭据下运行的 Windows 服务没有网络访问权限。
评论
0赞
mox
5/8/2012
当然,每个进程只能注册一个 UnhandledExceptionFilter。只要开发 DLL 并在异常结构中放置适当的标志,在 DLL 中发生异常这一事实并不是一个真正的问题。DLL 是否注册另一个 UnhandledExceptionFilter,则删除前一个。
0赞
ixe013
5/8/2012
他们没有经过身份验证的访问权限,但他们可以很好地进入网络。WER 服务器如何对计算机进行身份验证?
评论