получение подробной информации о структурированных исключениях - PullRequest
1 голос
/ 01 мая 2010

Мое приложение Visual C ++ компилируется с параметром / EHA, что позволяет мне отлавливать структурированные исключения (деление на ноль, нарушение доступа и т. Д.). Затем я перевожу эти исключения в свой собственный класс исключений, используя _set_se_translator (). Моя цель - улучшить регистрацию этих типов исключений.

Я могу получить тип исключения из структуры EXCEPTION_RECORD и адрес исключения. Я хотел бы иметь возможность собирать дополнительную информацию, например, исходный файл / местоположение, в котором генерируется исключение, стек вызовов и т. Д. Возможно ли это?

Я создаю мини-дамп исключений для структурированных исключений - есть ли инструмент для автоматического получения стека вызовов из этого?

Ответы [ 2 ]

1 голос
/ 01 мая 2010

Стек вызовов и вся другая информация об исключениях доступна с помощью посмертной отладки minidump:

http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx

AFAIK, генерация стековой информации в месте регистрации невозможна без файлов .pdb. Обычно файлы .pdb не устанавливаются на клиентский компьютер.

0 голосов
/ 04 мая 2010

У меня была одна идея - использовать разные функции транслятора в некоторых разных потоках (есть одна функция транслятора на поток), чтобы я мог знать, из какого потока было сгенерировано структурное исключение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...