Лучшее место для вызова MiniDumpWriteDump(), чтобы поймать сбой
У меня есть большая Win32-программа, которую я поддерживаю, и я бы хотел, чтобы она автоматически и безоговорочно генерировала файл мини-дампов всякий раз, когда случается что-то плохое. Я не могу попросить клиентов установить userdump.exe, и я не могу попросить их установить visual studio.
Есть ли хороший способ сделать это? Я хотел бы иметь возможность генерировать мини-дамп независимо от того, вызывается ли abort() из нашего обработчика assert (что сложно), касается ли кто-то плохой памяти или происходит что-то еще действительно плохое.
На Posix я бы установил обработчик сигнала и покончил бы с этим. Насколько я понимаю, в Windows аналогичным подходом является SEH, но наша программа запускает множество потоков в разных местах, поэтому было бы очень болезненно оборачивать каждую точку входа потока с помощью __try/__catch.
Идеи?
1 ответ
Есть клиентские и серверные компоненты Google Breakpad для ловли сбоев. Вы могли бы использовать эту библиотеку
Также вы можете зарегистрировать свой обратный вызов фильтра (может проверять различные типы экспедиции) для обработки исключений, используя AddVectoredExceptionHandler.
Надеюсь это помогло