비관리 코드와 관리 코드 간 각 전환에 대해 하나씩, 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