Как проглотить отчет о сбое при использовании Win32 :: CreateProcess - PullRequest
1 голос
/ 26 августа 2010

В последовательности юнит-тестов я проверяю, была ли обнаружена ошибка повреждения данных (преднамеренная подача поврежденных данных).

Чтобы рассматривать сбой программы (например, повреждение данных + плохое управление буфером) как обычное условие сбоя, я запускаю программу в дочернем процессе с CreateProcess. Моя проблема в том, что в случае сбоя я получаю диалоговое окно с отчетом о сбое из Windows, и мне нужно закрыть его, чтобы выполнить последовательность тестов.

Есть ли способ использовать CreateProcess, чтобы я мог проглотить отчет о сбое из Windows?

Ответы [ 2 ]

3 голосов
/ 28 августа 2010

Вы не можете сделать это с CreateProcess (), дочерняя программа должна сама позаботиться об этом. Два основных способа:

  • используйте ключевые слова __try/__except, чтобы поймать и обработать исключение SEH
  • зарегистрировать обратный вызов с помощью SetUnhandledExceptionFilter ()

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

0 голосов
/ 27 августа 2010

Вероятно, лучший план - отключить отчеты об ошибках Windows (отчеты об ошибках Microsoft в XP и более ранних версиях) на тестовом компьютере, по крайней мере, на время теста. Точные шаги зависят от вашей версии Windows, но она находится под Панелью управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...