У меня есть приложение MFC SDI, которое при запуске загружает DLL. Я могу только просматривать исходный код и использовать DLL, но не могу изменить и перекомпилировать его.
Ситуация теперь такова, что всякий раз, когда DLL сталкивается с ошибкой, она вызывает функцию exit (), как показано ниже.
bool Func()
{
// .. do something here
if (error) { exit(999); }
}
В моем приложении MFC я установил SetUnhandledExceptionFilter для обработки всех исключений, а также создал MiniDump для целей отладки.
Так что теперь проблема в том, что всякий раз, когда DLL сталкивается с какой-либо ошибкой, она просто вызывает exit () с кодом состояния 999, и мой ExceptionFilter не будет ее перехватывать, и, следовательно, MiniDump не создается для отладки PostMortem.
Мне было интересно, если:
1. Есть ли другой способ, чтобы мой глобальный обработчик исключений мог это уловить?
2. Могу ли я переопределить функцию exit (), чтобы при ее вызове я вызывал метод «throw (« error error! »)» И мой глобальный обработчик исключений мог его перехватить.
3. Я попытался использовать atexit () в своем приложении MFC, в результате чего я зарегистрировал другую функцию, чтобы выдавать ошибку всякий раз, когда DLL вызывает exit (). Но, похоже, это не работает.
Что я действительно хотел сделать, так это чтобы всякий раз, когда DLL сталкивался с ошибкой, я хотел, чтобы был создан MiniDump, чтобы я мог выполнять отладку PostMortem. Есть ли что-нибудь еще, что может работать в этой ситуации?
Спасибо.