在其他应用程序上隐藏访问冲突

时间:2010-03-19 18:27:14

标签: windows exception winapi exception-handling crash

我有一个应用程序有时会在退出时导致访问冲突。这是非常不可预测的,到目前为止所有找到错误的尝试都是不成功的。这个bug是无害的,因为没有数据丢失,所以我在想是否可以隐藏它。

是否有可能让另一个应用程序启动错误的应用程序并在发生错误时捕获访问冲突异常?如果是,怎么样?

提前致谢!

2 个答案:

答案 0 :(得分:2)

是的,如果其他应用程序是调试器。这是一项非常重要的工作,要成为调试器,您可以使用DEBUG_PROCESS |创建进程。 DEBUG_ONLY_THIS_PROCESS标志,有关详细信息,请参阅CreateProcess flags

一旦成为流程的调试者,您将获得第一次处理所有异常的机会。

您还可以在关闭之前作为调试器附加到该进程(假设您知道何时会发生这种情况)DebugActiveProcess

答案 1 :(得分:1)

在将有缺陷的应用程序作为子进程启动之前调用SetErrorMode(SEM_NOGPFAULTERRORBOX)

错误模式将继承到子进程,此特定标志将阻止崩溃对话框出现。