进程外SEH

时间:2013-04-17 13:12:57

标签: c++ multithreading exception-handling seh

我有一个带有SEH过滤器的c ++多线程应用程序(rite现在正在进行中 - 异常和进一步的决策是在同一个过程中完成的)。一旦发现异常是一个糟糕的设计,我意识到做了很多工作(编写转储,重新启动进程,报告崩溃)。糟糕的设计,因为其他正在运行的线程必须被冻结,异常处理程序本身内部异常的可能性。

我确信自己要么是异常处理程序必须是

1)Out-Of-Process处理程序(或)

2)必须在看门狗过程中处理。

我对Out-Of-Process Handler更感兴趣,与watch-dog进程不同,我们必须首先在待监视进程中注册异常处理程序(使用api:WERRegisterRunTimeExceptionModule)和一旦发生异常,Windows错误报告将在单独的进程中加载​​异常处理程序。我需要更多关于此的指示,有人实现它或一些教程或一些例子或我的理解是正确的。

看门狗流程将如下所示: 1)在待监控过程中启动看门狗过程。 2)一旦发生异常并且执行在SetUnhandledExceptionFilter内,设置一个事件并通知监视狗。 3)在事件通知期间必要时通过,以便可以在看门狗中创建转储。

这种方法是否可取?由于其他正在运行的线程直到坠毁过程导致的陷阱通知看门狗?

P.S:1)抱歉更加冗长。

2)我知道Google-BreakPad遵循Out-Of-Process方法,但我无法学习如何实现它。

0 个答案:

没有答案