Как получить имя модуля, вызвавшего структурированное исключение, с помощью структуры _EXCEPTION_POINTERS? (win32 C++)

(Платформа Win32 C++) Используя __try и __finally, как я могу получить имя модуля (и адрес) причины для исключения? Я вызываю GetExceptionInformation(), но из-за этого я не уверен, где эта информация.

Учитывая другие ресурсы онлайн и в MSDN, кажется, что обработчики Minidump и другой пример кода могут его получить, но я не уверен как.

Любые ссылки или более полезные ресурсы приветствуются.

2 ответа

Запись EXCEPTION_RECORD, предоставленная EXCEPTION_POINTERS, включает адрес, где произошло исключение. Затем вы можете, вероятно, использовать EnumProcessModules() и GetModuleInformation(), чтобы найти модуль, к которому относится адрес исключения, а затем использовать GetModuleFileNameEx(), чтобы получить имя файла этого модуля.

Вы хотите пройтись по стеку вызовов, как описано в этой статье CodeProject.

Либо вы можете использовать код Йохена как есть, либо попытаться собрать достаточно деталей, чтобы извлечь нужную информацию.

Другие вопросы по тегам