Уведомление о завершении аварийного дампа - PullRequest
0 голосов
/ 04 октября 2011

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

Если аварийный дамп слишком велик, тогда требуется некоторое время процессора, есть ли какая-либо функция обратного вызова в отладчике Windows (или Watson), котораяможет рассказать о завершении аварийного дампа?

Или есть какой-то механизм, с помощью которого я могу принудительно очистить аварийный дамп и запустить анализ.

Я не ищу решение на основе опроса.

1 Ответ

0 голосов
/ 05 ноября 2013
  1. Добавить запись реестра WER
  2. Завершить процесс
  3. Запустите свой самописный инструмент, который 3a) находит процесс werfault.exe и 3b) присоединиться к этому процессу (дождаться его завершения)
  4. Анализ файла дампа

Шаг 3b не использует опрос. Процесс - это объект синхронизации, который получает сигнал.

Обратите внимание, что шаг 3a не будет работать до сбоя, и если аварийный дамп небольшой, werfault.exe, возможно, уже завершился, поэтому он может ждать вечно. Чтобы обойти это, вы можете зарегистрировать свое приложение в качестве отладчика для werfault.exe, который внутренне перенаправляет аргументы в werfault.exe и затем ожидает его завершения.

Полная последовательность выглядит следующим образом:

  1. Добавить запись реестра WER
  2. Добавить запись отладчика для werfault.exe
  3. Завершить процесс
  4. Вместо werfault.exe ваше приложение будет работать. 4a) Запустите werfault.exe, чтобы создать дамп и 4b) присоединиться к этому процессу (дождаться его завершения)
  5. Может быть, удалить запись отладчика, если вы не хотите, чтобы она постоянно
  6. Анализ файла дампа

Наконец, я бы сказал, что вы можете достичь своей цели с некоторыми усилиями по реализации. Вопрос в том, сколько секунд это сэкономит и сколько часов потребуется для реализации?

...