Это правда, по умолчанию эти окна сообщений отключены.С этим можно сделать несколько вещей:
1.(Re) Включите окно сообщения (наиболее вероятно, что вы ищете)
Нажмите Старт и введите gpedit.msc .Затем перейдите к Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Отчеты об ошибках Windows -> Запретить отображение пользовательского интерфейса для критических ошибок и выберите Отключено . В случае сбоя приложения будет возвращено хотя бы несколько сообщений об ошибках.
2.Установите фильтр необработанных исключений (возможно, опасный)
Установите фильтр обработчика исключений и выберите нужные исключения.Недостатком здесь является то, что фильтр вызывается при каждом выдаваемом исключении.
3.Настройте обработчик сигналов (также опасный)
В основном как this .
void SignalHandler(int signal)
{
printf("Signal %d",signal);
throw "!Access Violation!";
}
int main()
{
typedef void (*SignalHandlerPointer)(int);
SignalHandlerPointer previousHandler;
previousHandler = signal(SIGSEGV , SignalHandler);
}
4.Используйте отчеты об ошибках Windows
Как упомянуто IInspectable и описано в его ответе .
Варианты 2 и 3 могут стать довольно сложными и опасными.Вам нужно некоторое базовое понимание исключений SEH , поскольку разные опции могут привести к разному поведению.Кроме того, не все разрешено в обработчиках исключений, например: запись в файлы чрезвычайно опасна или даже печать в терминал.Кроме того, поскольку вы обрабатываете эти исключения, ваша программа не будет завершена, то есть после обработчика она вернется к ошибочному коду.