_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] 0 또는 SOS_STACKTRACE_SHOWADDRESSES(0x01) 중 하나로 설정하여 각 module!functionname 줄 앞에 EBP 레지스터 및 ESP(Enter Stack Pointer)를 표시합니다.

설명

WinDbg 프로그래밍 인터페이스에서 _EFN_StackTrace 구조체를 호출할 수 있습니다. 매개 변수는 다음과 같이 사용됩니다.

  • wszTextOut이 null이고 puiTextLength가 null이 아니면 함수는 문자열 길이를 puiTextLength에 반환합니다.

  • wszTextOut이 null이 아니면 함수는 wszTextOut의 텍스트를 puiTextLength가 표시된 위치까지 저장합니다. 버퍼에 충분한 공간이 있으면 성공적으로 반환하거나 버퍼가 충분히 길지 않으면 E_OUTOFMEMORY를 반환합니다.

  • pTransitionContextspuiTransitionContextCount가 모두 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부터 사용 가능

참고 항목