Вне процесса SEH

У меня есть многопоточное приложение c ++ с фильтром SEH (сейчас процесс в процессе — исключения & дальнейшие решения принимаются в том же процессе). Я понял, что выполнять большую часть работы (писать дампы, перезапускать процесс, сообщать о сбое) после обнаружения исключения — плохой дизайн. Плохой дизайн, так как другие работающие потоки должны быть заблокированы, вероятность возникновения исключений внутри самого обработчика исключений.

Я убедил себя, что любой обработчик исключений должен быть

1) Обработчик вне процесса (или)

2) Должен обрабатываться в процессе сторожевой собаки.

Меня больше интересует обработчик Out-Of-Process, где, в отличие от процесса watch-dog, мы должны сначала зарегистрировать обработчик исключений в процессе, подлежащем мониторингу (используя api: WERRegisterRunTimeExceptionModule ) и Windows Error Reporting загрузит обработчик исключений в отдельный процесс, как только возникнет исключение. Мне нужно больше указателей на это, кто-нибудь реализовал это или какие-то учебники или несколько примеров, или мое понимание верно.

Процесс сторожа будет выглядеть так:
1) Запустите процесс сторожевого устройства в процессе, подлежащем мониторингу.
2) Как только возникает исключение, и выполнение находится внутри SetUnhandledExceptionFilter, установите событие и уведомите сторожа.
3) Пропуск, необходимый во время события, уведомляет, чтобы в сторожевой собаке можно было создавать дампы.

Этот подход целесообразен? Как насчет ловушек из-за других запущенных потоков, пока сбойный процесс не уведомит сторожа?

П.С .: 1) Извините за то, что я более многословен.

2) Я знаю, что Google-BreakPad следует методу Out-Of-Process, но я не могу узнать, как реализовать то же самое.

0

Решение

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

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

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

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