다음을 통해 공유


DEBUG_STACK_FRAME 구조체(dbgeng.h)

DEBUG_STACK_FRAME 구조체는 스택 프레임과 스택 프레임에 대한 현재 명령의 주소를 설명합니다.

구문

typedef struct _DEBUG_STACK_FRAME {
  ULONG64 InstructionOffset;
  ULONG64 ReturnOffset;
  ULONG64 FrameOffset;
  ULONG64 StackOffset;
  ULONG64 FuncTableEntry;
  ULONG64 Params[4];
  ULONG64 Reserved[6];
  BOOL    Virtual;
  ULONG   FrameNumber;
} DEBUG_STACK_FRAME, *PDEBUG_STACK_FRAME;

멤버

InstructionOffset

스택 프레임에 대한 관련 명령의 프로세스 가상 주소 공간 위치입니다. 일반적으로 다음 스택 프레임의 반환 주소이거나 프레임이 스택 맨 위에 있는 경우 현재 명령 포인터입니다.

ReturnOffset

스택 프레임에 대한 반환 주소의 프로세스 가상 주소 공간 위치입니다. 일반적으로 이전 스택 프레임에 대한 관련 명령입니다.

FrameOffset

알려진 경우 스택 프레임의 프로세스 가상 주소 공간에 있는 위치입니다. 일부 프로세서 아키텍처에는 프레임이 없거나 둘 이상이 있습니다. 이러한 경우 엔진은 지정된 스택 수준에 가장 대표적인 값을 선택합니다.

StackOffset

프로세서 스택의 프로세스 가상 주소 공간 위치입니다.

FuncTableEntry

사용 가능한 경우 이 프레임에 대한 함수 항목의 대상 가상 주소 공간에 있는 위치입니다. 설정하면 이 포인터가 무기한 유효하게 유지되지 않으며 나중에 사용할 수 있도록 유지해서는 안 됩니다. 대신 InstructionOffset 값을 저장하고 IDebugSymbols3::GetFunctionEntryByOffset 과 함께 사용하여 나중에 함수 항목 정보를 검색합니다.

Params[4]

사용 가능한 경우 함수에 전달되는 처음 4개의 스택 슬롯 값입니다. 인수가 4개 미만이면 나머지 항목은 0으로 설정됩니다. 이러한 스택 슬롯은 매개 변수 값을 포함하도록 보장되지 않습니다. 일부 호출 규칙 및 컴파일러 최적화는 매개 변수 정보 식별을 방해할 수 있습니다. 자세한 인수 정보와 적절한 위치 처리를 위해 IDebugSymbols::GetScopeSymbolGroup 을 사용하여 실제 매개 변수 기호를 검색합니다.

Reserved[6]

다음에 사용하도록 예약됩니다.

Virtual

디버거에서 해제하여 이 스택 프레임을 생성한 경우 값은 TRUE 로 설정됩니다. 그렇지 않으면 값이 스레드의 현재 컨텍스트에서 형성된 경우 FALSE 입니다. 일반적으로 이 값은 스택 맨 위에 있는 프레임에 대해 TRUE 입니다. 여기서 InstructionOffset 은 현재 명령 포인터입니다.

FrameNumber

프레임의 인덱스입니다. 이 인덱스는 호출 스택 위쪽의 프레임 수를 계산합니다. 현재 호출을 나타내는 스택 맨 위에 있는 프레임에는 인덱스 0이 있습니다.

요구 사항

요구 사항
헤더 dbgeng.h(DbgEng.h 포함)