Подтвердить что ты не робот

Как отключить диалоговое окно подтверждения отладки в Windows?

У меня есть куча модульных тестов, которые я запускаю в пакетном режиме. Иногда из-за ошибки отладки, выпущенной из библиотеки Visual С++, вы будете рушиться. Это приведет к появлению диалогового окна, и тесты устройства прекратятся, пока я не нажму "ОК", чтобы закрыть диалоговое окно.

Как я могу сделать С++-программу просто сбой (например, в Linux), когда она попадает в утверждение, вместо того, чтобы вызывать раздражающий диалог?

Примечание. Я не хочу отключать утверждения; просто диалог.

4b9b3361

Ответ 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/...