_EFN_StackTrace 함수
비관리 코드와 관리 코드 간 각 전환에 대해 하나씩, CONTEXT
레코드 배열 및 관리되는 스택 추적의 텍스트 표시를 제공합니다.
구문
HRESULT CALLBACK _EFN_StackTrace(
[in] PDEBUG_CLIENT Client,
[out] WCHAR wszTextOut[],
[out] size_t *puiTextLength,
[out] LPVOID pTransitionContexts,
[out] size_t *puiTransitionContextCount,
[in] size_t uiSizeOfContext,
[in] DWORD Flags
);
매개 변수
Client
[in] 디버깅 중인 클라이언트입니다.
wszTextOut
[out] 스택 추적의 텍스트 표현입니다.
puiTextLength
[out] 의 문자 수에 wszTextOut
대한 포인터입니다.
pTransitionContexts
[out] 전환 컨텍스트의 배열입니다.
puiTransitionContextCount
[out] 배열의 전환 컨텍스트 수에 대한 포인터입니다.
uiSizeOfContext
[in] 컨텍스트 구조의 크기입니다.
Flags
[in] 각 module!functionname
줄 앞에 EBP 레지스터 및 ESP(Enter 스택 포인터)를 표시하려면 0 또는 SOS_STACKTRACE_SHOWADDRESSES(0x01)로 설정합니다.
설명
WinDbg 프로그래밍 인터페이스에서 _EFN_StackTrace
구조체를 호출할 수 있습니다. 매개 변수는 다음과 같이 사용됩니다.
wszTextOut
이 null이고puiTextLength
가 null이 아니면 함수는 문자열 길이를puiTextLength
에 반환합니다.wszTextOut
이 null이 아니면 함수는wszTextOut
의 텍스트를puiTextLength
가 표시된 위치까지 저장합니다. 버퍼에 충분한 공간이 있으면 성공적으로 반환하거나 버퍼가 충분히 길지 않으면 E_OUTOFMEMORY를 반환합니다.pTransitionContexts
및puiTransitionContextCount
가 모두 null인 경우 함수의 전환 부분은 무시됩니다. 이 경우 함수는 호출자에게 오직 함수 이름의 텍스트 출력을 제공합니다.pTransitionContexts
가 null이고puiTransitionContextCount
가 null이 아니면 함수는puiTransitionContextCount
에서 필요한 수의 컨텍스트 항목을 반환합니다.pTransitionContexts
가 null이 아니면 함수는 길이가puiTransitionContextCount
인 구조체의 배열로 처리합니다. 구조체 크기는uiSizeOfContext
로, 아키텍처의 경우 SimpleContext 또는CONTEXT
여야 합니다.wszTextOut
은 다음 형식으로 작성됩니다."<ModuleName>!<Function Name>[+<offset in hex>] ... (TRANSITION) ..."
16진수의 오프셋이 0x0이면 오프셋이 기록되지 않습니다.
현재 컨텍스트에 있는 스레드에 관리 코드가 없으면 함수는 SOS_E_NOMANAGEDCODE를 반환합니다.
Flags
매개 변수는 0이거나 SOS_STACKTRACE_SHOWADDRESSES이며, 각module!functionname
줄 앞에 EBP 및 ESP를 표시합니다. 기본값은 0입니다.#define SOS_STACKTRACE_SHOWADDRESSES 0x00000001
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: SOS_Stacktrace.h
.NET Framework 버전: 2.0부터 사용 가능
참고 항목
.NET