У меня есть приложение с 64-битным MFC, в котором я использую отчеты о сбоях. Метод основан на этой статье: http://www.codeproject.com/KB/debug/XCrashReportPt1.aspx?display=Print Итак, у меня есть обертка __try - __except вокруг AfxWinMain
. В прошлом году он работал хорошо (я имею в виду разные операционные системы, а также 32-битное и 64-битное приложение). Давайте возьмем это исключение предоставления части коды:Работа с обработкой исключений приложений MFC
void CMyDig::Foo()
{
std::vector<int> v;
int i = v.at(42);
}
Когда я пишу этот код внутри обработчика сообщений диалогового, например clickhandler кнопки под названием Foo, то исключение не попавший в AfxWinMain
. Если я пишу то же самое для глобальной функции, он передает исключение в AfxWinMain
. Теперь у нас есть эта странная проблема: На некоторых компьютерах случай диалога также генерирует отчет о сбое (входит в блок __except в afxwinmain), но другие нет. Мне удалось создать отчет о сбоях на win7 64-bit, но та же программа на win8, win8.1 и еще одна win7 64bit не делает отчет! Я компилирую с vs2010, а в вариантах генерации кода для «enable C++ exceptions» установлено значение EHsc (как в прошлом году, когда он работал хорошо).
Спасибо за любые идеи! Attila
Спасибо! Вы указали правильный метод, и, похоже, он работает для меня! Я также использовал это руководство: http://www.codeproject.com/Articles/154686/SetUnhandledExceptionFilter-and-the-C-C-Runtime-Li – balazsati