IDebugControl4::GetContextStackTrace 메서드(dbgeng.h)
GetContextStackTrace 메서드는 임의의 레지스터 컨텍스트에서 시작하여 각 스택 프레임에 대해 재구성된 레지스터 컨텍스트를 반환하여 호출 스택 맨 위에 있는 프레임을 반환합니다.
구문
HRESULT GetContextStackTrace(
[in, optional] PVOID StartContext,
[in] ULONG StartContextSize,
[out, optional] PDEBUG_STACK_FRAME 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입니다. Frames가NULL이면 이 정보가 반환되지 않습니다.
[in] FramesSize
배열 프레임의 항목 수를 지정 합니다.
[out, optional] FrameContexts
스택의 각 프레임에 대해 재구성된 레지스터 컨텍스트를 받습니다. 이 배열의 항목은 Frames 배열의 항목에 해당합니다. 스레드 컨텍스트의 형식은 대상의 유효 프로세서에 대한 CONTEXT 구조입니다. FrameContexts가 NULL이면 이 정보가 반환되지 않습니다.
[in] FrameContextsSize
FrameContexts가 가리키는 메모리의 크기(바이트)를 지정합니다. 반환되는 스택 프레임 수는 반환된 컨텍스트 수와 같으며 FrameContextsSize는 FramesSize 시간 FrameContextsEntrySize와 같아야 합니다.
[in] FrameContextsEntrySize
FrameContexts에서 각 프레임 컨텍스트의 크기(바이트)를 지정합니다.
[out, optional] FramesFilled
FrameContexts의 배열 Frame 및 컨텍스트에 배치된 프레임 수를 받습니다. FramesFilled가 NULL이면 이 정보가 반환되지 않습니다.
반환 값
반환 코드 | Description |
---|---|
|
메서드를 성공적으로 수행했습니다. |
이 메서드는 오류 값을 반환할 수도 있습니다. 자세한 내용은 반환 값을 참조하세요.
설명
Frames 및 FrameContexts로 반환된 스택 추적은 OutputContextStackTrace를 사용하여 인쇄할 수 있습니다.
스택 해제는 레지스터의 하위 집합만 복원하는 것이 일반적입니다. 예를 들어 일시적 레지스터는 스크래치 레지스터이고 코드는 이를 보존할 필요가 없으므로 스택 해제가 항상 휘발성 레지스터 상태를 복원하지는 않습니다. 해제 시 복원되지 않은 레지스터는 복원된 마지막 값으로 남아 있으므로 해제에 의해 복원되지 않을 수 있는 레지스터 상태를 사용할 때는 주의해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | dbgeng.h(Dbgeng.h, Ntddk.h 포함) |