Как отключить диалоговое окно подтверждения отладки в Windows?
У меня есть куча модульных тестов, которые я запускаю в пакетном режиме. Иногда из-за ошибки отладки, выпущенной из библиотеки Visual С++, вы будете рушиться. Это приведет к появлению диалогового окна, и тесты устройства прекратятся, пока я не нажму "ОК", чтобы закрыть диалоговое окно.
Как я могу сделать С++-программу просто сбой (например, в Linux), когда она попадает в утверждение, вместо того, чтобы вызывать раздражающий диалог?
Примечание. Я не хочу отключать утверждения; просто диалог.
Ответы
Ответ 1
Отъезд _CrtSetReportHook():
http://msdn.microsoft.com/en-us/library/0yysf5e6.aspx
MSDN рекламирует это как надежный способ приложения для обработки ошибок CRT во время выполнения, таких как утверждения. Предположительно вы можете определить крючок отчета, который выгружает ваш процесс:
Как создать minidump для моего процесса при его сбое?
Ответ 2
Этот код отключит отображение диалога. Вместо этого он выдает сообщение об ошибке в окне вывода и stderr.
int main( int argc, char **argv )
{
if( !IsDebuggerPresent() )
{
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
}
...
}
Ответ 3
Я поместил код для подходящего крюка (который вы можете установить с помощью _CrtSetReportHook()) в: fooobar.com/info/406265/...