Поиск кода исключения на C ++
-
09-06-2019 - |
Вопрос
Зная код исключения, есть ли способ узнать больше о том, что означает фактическое исключение, которое было сгенерировано?
Мое исключение, о котором идет речь:0x64487347
Адрес исключения:0x1
Стек вызовов не показывает никакой информации.
Я просматриваю файл .dmp с ошибкой, а на самом деле не отлаживаю его в Visual Studio.
Решение
Поскольку вы просматриваете аварийный дамп, я предполагаю, что он поступил от клиента, и вы не можете легко воспроизвести неисправность с помощью дополнительных инструментов.
Мне нечего предложить, кроме как отметить, что код исключения 0x64487347 имеет код ASCII "dShG", и разработчики часто используют инициалы рутинного или аварийного состояния при составлении магических чисел, подобных этому.
Небольшое гугление выявило одно совпадение для dHsg в нужном контексте - название функции в поиске книги Google по запросу "Использование Visual C ++ 6" Кейт Грегори.К сожалению, само по себе это не помогло.
Другие советы
Истинное исключение C ++, генерируемое из среды выполнения Microsoft, будет иметь SEH-код 0xe06d7363 (E0 + 'msc').У вас есть какое-то другое исключение.
.NET генерирует исключения SEH с кодом 0xe0434f4d (E0 + 'COM').
Коды состояния NT задокументированы в ntstatus.h и обычно начинаются с 0x80 (предупреждения) или 0xC0 (ошибки).Наиболее известным является 0xC0000005, STATUS_ACCESS_VIOLATION.
Если вы знаете, какой блок выбросил исключение, можете ли вы поместить более конкретные обработчики в блок catch, чтобы попытаться изолировать его таким образом?
Вы создаете исключение, которое создали сами?
Редактировать:Я забыл указать вам на эта статья об исключениях Visual C ++, которые я счел весьма полезными.
Роб