我有一个 MFC SDI 应用程序,它在启动期间加载一个 DLL。我只能查看源代码并使用 DLL,但不能更改和重新编译它。
现在的情况是,每当 DLL 遇到错误时,它都会调用 exit(),如下所示。
bool Func()
{
// .. do something here
if (error) { exit(999); }
}
在我的 MFC 应用程序中,我设置了 SetUnhandledExceptionFilter 来处理所有异常,还创建了一个 MiniDump 用于调试目的。
所以现在的问题是,每当 DLL 遇到任何错误时,它只会使用状态码 999 调用 exit(),而我的 ExceptionFilter 不会捕获它,因此不会为 PostMortem 调试创建 MiniDump。
我想知道是否:
1. 我的全局异常处理程序是否有其他方法可以捕获这个?
2. 我可以重写exit() 函数,以便在调用它时,我调用它“throw(”error遇到!“)”并且我的全局异常处理程序可以捕获它。
3. 我尝试在我的 MFC 应用程序中使用 atexit(),借此我注册另一个函数以在 DLL 调用 exit() 时抛出错误。但这似乎也不起作用。
我真正想做的是,每当 DLL 遇到错误时,我都希望生成一个 MiniDump,这样我就可以进行事后调试。在这种情况下还有什么其他可能有用的吗?
谢谢。