IDebugControl5::GetContextStackTraceEx 메서드(dbgeng.h)
GetContextStackTraceEx 메서드는 임의의 레지스터 컨텍스트 시작하고 각 스택 프레임에 대해 재구성된 레지스터 컨텍스트를 반환하여 호출 스택의 맨 위에 있는 프레임을 반환합니다. GetContextStackTraceEx 메서드는 인라인 프레임 지원을 제공합니다. 인라인 함수 작업에 대한 자세한 내용은 최적화된 코드 및 인라인 함수 디버깅을 참조하세요.
통사론
HRESULT GetContextStackTraceEx(
[in, optional] PVOID StartContext,
[in] ULONG StartContextSize,
[out, optional] PDEBUG_STACK_FRAME_EX Frames,
[in] ULONG FramesSize,
[out, optional] PVOID FrameContexts,
[in] ULONG FrameContextsSize,
[in] ULONG FrameContextsEntrySize,
[out, optional] PULONG FramesFilled
);
매개 변수
[in, optional] StartContext
스택의 맨 위에 대한 레지스터 컨텍스트를 지정합니다.
[in] StartContextSize
StartContext 레지스터 컨텍스트의 크기(바이트)를 지정합니다.
[out, optional] Frames
스택 프레임을 받습니다. 이 배열이 보유하는 요소 수는 FrameSize . 프레임 NULL 경우 이 정보가 반환되지 않습니다.
[in] FramesSize
배열 Frames항목 수를 지정합니다.
[out, optional] FrameContexts
스택의 각 프레임에 대해 재구성된 레지스터 컨텍스트를 받습니다. 이 배열의 항목은 Frames 배열의 항목에 해당합니다. 스레드 컨텍스트의 형식은 대상의 유효 프로세서에 대한 CONTEXT 구조입니다. FrameContexts NULL 경우 이 정보가 반환되지 않습니다.
[in] FrameContextsSize
FrameContexts가리키는 메모리의 크기(바이트)를 지정합니다. 반환되는 스택 프레임의 수는 반환되는 컨텍스트 수와 같으며, FrameContextsSizeFramesSize 번 FrameContextsEntrySize같아야 합니다.
[in] FrameContextsEntrySize
FrameContexts각 프레임 컨텍스트의 크기를 바이트 단위로 지정합니다.
[out, optional] FramesFilled
배열 Frame 및 FrameContexts컨텍스트에 배치된 프레임 수를 받습니다. FramesFilled NULL 경우 이 정보가 반환되지 않습니다.
반환 값
반환 코드 | 묘사 |
---|---|
|
메서드가 성공했습니다. |
이 메서드는 오류 값을 반환할 수도 있습니다. 자세한 내용은 반환 값참조하세요.
발언
Frames 및 FrameContexts 반환된 스택 추적은 OutputContextStackTraceEx사용하여 인쇄할 수 있습니다.
스택 해제는 레지스터의 하위 집합만 복원하는 것이 일반적입니다. 예를 들어 일시적 레지스터는 스크래치 레지스터이고 코드는 이를 유지할 필요가 없으므로 스택 해제가 항상 휘발성 레지스터 상태를 복원하지는 않습니다. 해제 시 복원되지 않은 레지스터는 마지막 값이 복원된 상태로 남아 있으므로 해제에 의해 복원되지 않을 수 있는 레지스터 상태를 사용할 때는 주의해야 합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | dbgeng.h(Dbgeng.h, Ntddk.h 포함) |