Создание сторожевого таймера для захвата минидампов

Я пытаюсь добавить функциональность захвата мини-дампов, когда моя программа падает. Из того, что я прочитал, это лучше всего достигается с помощью другого приложения (сторожевого таймера), которое используется для размещения реального приложения и выполнения дампа.

Из просмотра таких сообщений, как этот, Я придумал следующее (и App, и WatchDog реализованы на C ++ с использованием Win32):

  • Когда сторожевой таймер запускается, он создает 2 события, ExitedOk событие, и исключение событие, оба из которых установлены как наследуемые и не сигнализируются. Он также создает наследуемое сопоставление файлов.

  • Затем сторожевой таймер запускает «настоящее приложение» и ожидает WaitOnMultipleObjects для любого ExitedOk или же исключение быть сигнализированным.

  • Когда приложение запускается, оно создает те же 2 события (оно наследует дескрипторы)

  • Приложение настроено так, что если оно выходит нормально, оно сигнализирует ExitedOk, или если происходит необработанное исключение, оно сохраняет информацию об исключении / потоке, используя унаследованное сопоставление файлов, сигналы исключение, а потом спит (бесконечно).

  • Если WaitOnMultipleObjects в сторожевом таймере сигнализируется с помощью ExitedOk, Ничего не произошло. Если это сигнализируется с исключение, затем он читает информацию об исключении / потоке, используя сопоставление файлов, а затем вызывает MiniDumpWriteDump.

Очевидно, что Sleep () является проблемой. Это лучше всего решается с помощью другого события? Так что приложение ждет, пока сторожевой таймер не сообщит о каком-либо событии «FinishedCreatingDump»?

Во-вторых, я подумал, что весь смысл сторожевого таймера заключался в том, что вы не выполняли какую-либо работу в аварийном процессе, которая потенциально нестабильна? Если я правильно понимаю рабочий процесс и что вам действительно нужен SetEvent / OpenFileMapping / MapViewOfFile в процессе, который фактически завершился с ошибкой, разве это не так плохо, как вызов MiniDumpWriteDump из него?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]