Поймать "Программа перестала работать" на Vista - PullRequest
6 голосов
/ 23 ноября 2008

В Vista возникла проблема с обработчиком сбоя приложения. В основном, если происходит что-то неожиданное, которое не может быть захвачено SEH, я получаю это всплывающее окно с надписью «Приложение перестало работать», blablabla, «Закрыть программу / Отладочная программа» - то есть после того, как я отключаю отчеты об ошибках, используя Панель управления системой. С включенным отчетом об ошибках вы получите диалоговое окно с поиском решения онлайн, закрытие, отладка.

Это не так забавно, если это происходит в автоматизированных инструментах, и мне интересно, есть ли способ избавиться от него полностью , прочитайте, если мое приложение вылетает, оно просто вылетает в командную строку или исчезает, но не вызывает диалог.

Ответы [ 2 ]

6 голосов
/ 23 ноября 2008

Используйте

SetErrorMode(SetErrorMode(0)|SEM_NOGPFAULTERRORBOX);

Но я бы предложил установить обработчик исключений, который создает дамп, чтобы вы могли проверить, что произошло. Например, crashrpt (или здесь ).

Смотри также

0 голосов
/ 28 ноября 2008

Функция сигнал работает на всех платформах POSIX:

signal(SIGSEGV, &signal_handler);

Если вам нужно перехватить исключение, которое не поддерживается сигналом, вы также можете взглянуть на AddVectoredExceptionHandler , функцию, специфичную для W32.

...