MINIDUMP_EXCEPTION 结构 (minidumpapiset.h)

包含异常信息。

语法

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 字节边界上对齐;4 字节边界上的 32 位值等。
EXCEPTION_FLT_DENORMAL_OPERAND
浮点运算中的一个操作数是反常运算。 非规范值太小,无法表示为标准浮点值。
EXCEPTION_FLT_DIVIDE_BY_ZERO
线程尝试将浮点值除以 0 的浮点除数。
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
线程占用了其堆栈。
 

调试控制台进程时,可能会发生另一个异常代码。 它不会因为编程错误而出现。 当将 CTRL+C 输入到处理 CTRL+C 信号的控制台进程并正在调试时,将发生异常代码DBG_CONTROL_C。 此异常代码不应由应用程序处理。 它仅出于调试器的优势而引发,并且仅在将调试器附加到控制台进程时引发。

ExceptionFlags

此成员可以是零(表示连续异常)或EXCEPTION_NONCONTINUABLE(表示不可持续异常)。 在不可持续异常后继续执行的任何尝试都会导致EXCEPTION_NONCONTINUABLE_EXCEPTION异常。

ExceptionRecord

指向关联的 MINIDUMP_EXCEPTION 结构的指针。 异常记录可以链接在一起,以在发生嵌套异常时提供其他信息。

ExceptionAddress

发生异常的地址。

NumberParameters

与异常关联的参数数。 这是 ExceptionInformation 数组中定义的元素数。

__unusedAlignment

保留用于跨平台结构成员对齐。 请勿设置。

ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]

描述异常的其他参数的数组。 RaiseException 函数可以指定此参数数组。 对于大多数异常代码,数组元素是未定义的。 对于以下异常代码,数组元素的定义如下。

异常代码 含义
EXCEPTION_ACCESS_VIOLATION
数组的第一个元素包含一个读/写标志,该标志指示导致访问冲突的操作类型。 如果此值为零,则线程尝试读取不可访问的数据。 如果此值为 1,则线程尝试写入不可访问的地址。

第二个数组元素指定不可访问数据的虚拟地址。

要求

要求
Header minidumpapiset.h (包括 DbgHelp.h)
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

MINIDUMP_EXCEPTION_STREAM

RaiseException