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
부동 소수점 연산의 결과는 10진수 분수로 정확하게 나타낼 수 없습니다.
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
스레드는 정수 값을 0의 정수 수로 나누려고 했습니다.
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

이 멤버는 연속 가능한 예외를 나타내는 0이거나, 연결할 수 없는 예외를 나타내는 EXCEPTION_NONCONTINUABLE 수 있습니다. 연결할 수 없는 예외 후 실행을 계속하려고 하면 EXCEPTION_NONCONTINUABLE_EXCEPTION 예외가 발생합니다.

ExceptionRecord

연결된 MINIDUMP_EXCEPTION 구조체에 대한 포인터입니다. 중첩된 예외가 발생할 때 추가 정보를 제공하기 위해 예외 레코드를 함께 연결할 수 있습니다.

ExceptionAddress

예외가 발생한 주소입니다.

NumberParameters

예외와 연결된 매개 변수 수입니다. ExceptionInformation 배열에 정의된 요소의 수입니다.

__unusedAlignment

플랫폼 간 구조체 멤버 맞춤을 위해 예약됩니다. 설정하지 마세요.

ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]

예외를 설명하는 추가 인수의 배열입니다. RaiseException 함수는 이 인수 배열을 지정할 수 있습니다. 대부분의 예외 코드에서 배열 요소는 정의되지 않습니다. 다음 예외 코드의 경우 배열 요소는 다음과 같이 정의됩니다.

예외 코드 의미
EXCEPTION_ACCESS_VIOLATION
배열의 첫 번째 요소에는 액세스 위반을 발생시킨 작업 유형을 나타내는 읽기/쓰기 플래그가 포함되어 있습니다. 이 값이 0이면 스레드가 액세스할 수 없는 데이터를 읽으려고 했습니다. 이 값이 1이면 스레드가 액세스할 수 없는 주소에 쓰려고 했습니다.

두 번째 배열 요소는 액세스할 수 없는 데이터의 가상 주소를 지정합니다.

요구 사항

요구 사항
헤더 minidumpapiset.h(DbgHelp.h 포함)
재배포 가능 파일 DbgHelp.dll 5.1 이상

추가 정보

MINIDUMP_EXCEPTION_STREAM

RaiseException