Содержит сведения об исключении.
Синтаксис
typedef struct _MINIDUMP_EXCEPTION {
ULONG32 ExceptionCode;
ULONG32 ExceptionFlags;
ULONG64 ExceptionRecord;
ULONG64 ExceptionAddress;
ULONG32 NumberParameters;
ULONG32 __unusedAlignment;
ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION;
Члены
ExceptionCode
Причина возникновения исключения. Это код, созданный аппаратным исключением, или код, указанный в функции RaiseException для программного исключения. Ниже приведены коды исключений, которые могут возникнуть из-за распространенных ошибок программирования.
| Значение |
Значение |
-
EXCEPTION_ACCESS_VIOLATION
|
Поток пытался выполнить чтение или запись на виртуальный адрес, для которого у него нет соответствующего доступа.
|
-
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
|
Поток пытался получить доступ к элементу массива, который выходит за рамки, а базовое оборудование поддерживает проверку границ.
|
-
EXCEPTION_BREAKPOINT
|
Обнаружена точка останова.
|
-
EXCEPTION_DATATYPE_MISALIGNMENT
|
Поток пытался считывать или записывать данные, которые неправильно настроены на оборудовании, которое не обеспечивает выравнивание. Например, 16-разрядные значения должны быть выровнены по 2-байтовой границе; 32-разрядные значения на 4-байтовых границах и т. д.
|
-
EXCEPTION_FLT_DENORMAL_OPERAND
|
Одним из операндов в операции с плавающей запятой является денормальный. Денормальное значение — это значение, которое слишком мало, чтобы представить его как стандартное значение с плавающей запятой.
|
-
EXCEPTION_FLT_DIVIDE_BY_ZERO
|
Поток попытался разделить значение с плавающей запятой на делитель с плавающей запятой, равный нулю.
|
-
EXCEPTION_FLT_INEXACT_RESULT
|
Результат операции с плавающей запятой не может быть представлен точно в виде дробной дроби.
|
-
EXCEPTION_FLT_INVALID_OPERATION
|
Это исключение представляет все исключения с плавающей запятой, не включенные в этот список.
|
-
EXCEPTION_FLT_OVERFLOW
|
Экспонента операции с плавающей запятой больше, чем допустимая величина для соответствующего типа.
|
-
EXCEPTION_FLT_STACK_CHECK
|
Стек переполнен или недополучен в результате операции с плавающей запятой.
|
-
EXCEPTION_FLT_UNDERFLOW
|
Экспонента операции с плавающей запятой меньше величины, разрешенной соответствующим типом.
|
-
EXCEPTION_ILLEGAL_INSTRUCTION
|
Поток пытался выполнить недопустимую инструкцию.
|
-
EXCEPTION_IN_PAGE_ERROR
|
Поток попытался получить доступ к странице, которая не присутствовала, и системе не удалось загрузить страницу. Например, это исключение может возникнуть при потере сетевого подключения при запуске программы по сети.
|
-
EXCEPTION_INT_DIVIDE_BY_ZERO
|
Поток попытался разделить целочисленное значение на целочисленный делитель, равный нулю.
|
-
EXCEPTION_INT_OVERFLOW
|
Результат целочисленной операции вызвал выполнение наиболее значительного бита результата.
|
-
EXCEPTION_INVALID_DISPOSITION
|
Обработчик исключений вернул диспетчеру исключений недопустимую ликвидацию. Программисты, использующие высокоуровневый язык, такой как C, никогда не должны столкнуться с этим исключением.
|
-
EXCEPTION_NONCONTINUABLE_EXCEPTION
|
Поток пытался продолжить выполнение после возникновения неразрывного исключения.
|
-
EXCEPTION_PRIV_INSTRUCTION
|
Поток пытался выполнить инструкцию, операция которой не разрешена в текущем режиме компьютера.
|
-
EXCEPTION_SINGLE_STEP
|
Ловушка трассировки или другой механизм с одной инструкцией сигнализирует о выполнении одной инструкции.
|
-
EXCEPTION_STACK_OVERFLOW
|
Поток использовал свой стек.
|
При отладке консольных процессов, скорее всего, возникнет другой код исключения. Это не возникает из-за ошибки программирования. Код исключения DBG_CONTROL_C возникает, когда клавиши CTRL+C являются входными данными в консольный процесс, обрабатывающий сигналы CTRL+C, и выполняется отладка. Этот код исключения не предназначен для обработки приложениями. Он вызывается только в интересах отладчика и вызывается только при присоединении отладчика к консольному процессу.
ExceptionFlags
Этот элемент может быть либо нулевым, указывающим на непрерывное исключение, либо EXCEPTION_NONCONTINUABLE, указывающим на непреобразуемое исключение. Любая попытка продолжить выполнение после неразрывного исключения вызывает исключение EXCEPTION_NONCONTINUABLE_EXCEPTION.
ExceptionRecord
Указатель на связанную структуру MINIDUMP_EXCEPTION . Записи исключений можно объединить в цепочку, чтобы предоставить дополнительные сведения при возникновении вложенных исключений.
ExceptionAddress
Адрес, по которому возникло исключение.
NumberParameters
Количество параметров, связанных с исключением. Это количество определенных элементов в массиве ExceptionInformation .
__unusedAlignment
Зарезервировано для выравнивания элементов кроссплатформенной структуры. Не задавайте.
ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
Массив дополнительных аргументов, описывающих исключение. Функция RaiseException может указать этот массив аргументов. Для большинства кодов исключений элементы массива не определены. Для следующего кода исключения элементы массива определяются следующим образом.
| Код исключения |
Значение |
-
EXCEPTION_ACCESS_VIOLATION
|
Первый элемент массива содержит флаг чтения и записи, указывающий тип операции, вызвавшей нарушение доступа. Если это значение равно нулю, поток попытался прочитать недоступные данные. Если это значение равно 1, поток попытался выполнить запись на недоступный адрес.
Второй элемент массива задает виртуальный адрес недоступных данных.
|
Требования
| Требование |
Значение |
|
Заголовок |
minidumpapiset.h (включая DbgHelp.h) |
|
Распространяемые компоненты |
DbgHelp.dll 5.1 или более поздней версии |
См. также раздел
MINIDUMP_EXCEPTION_STREAM
RaiseException