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