Compartilhar via


Função _EFN_StackTrace

Fornece uma representação de texto de um rastreamento de pilha gerenciado e uma matriz de registros CONTEXT, uma para cada transição entre código não gerenciado e gerenciado.

Sintaxe

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
);

Parâmetros

Client [em] O cliente que está sendo depurado.

wszTextOut [fora] A representação de texto do rastreamento de pilha.

puiTextLength [fora] Um ponteiro para o número de caracteres em wszTextOut.

pTransitionContexts [fora] A matriz de contextos de transição.

puiTransitionContextCount [fora] Um ponteiro para o número de contextos de transição na matriz.

uiSizeOfContext [em] O tamanho da estrutura de contexto.

Flags [em] Defina como 0 ou SOS_STACKTRACE_SHOWADDRESSES (0x01) para mostrar o registro EBP e o ponteiro de pilha de entrada (ESP) na frente de cada module!functionname linha.

Comentários

A estrutura _EFN_StackTrace pode ser chamada de uma interface programática WinDbg. Os parâmetros são usados da seguinte maneira:

  • Se wszTextOut for nulo e puiTextLength não for nulo, a função retornará o comprimento da cadeia de caracteres em puiTextLength.

  • Se wszTextOut não for nulo, a função armazenará o texto em wszTextOut até o local indicado por puiTextLength. Ele retornará com êxito se houver espaço suficiente no buffer ou retornará E_OUTOFMEMORY se o buffer não for longo o suficiente.

  • A parte de transição da função é ignorada se pTransitionContexts e puiTransitionContextCount forem nulos. Nesse caso, a função fornece aos chamadores a saída de texto somente dos nomes de função.

  • Se pTransitionContexts for nulo e puiTransitionContextCount não for nulo, a função retornará o número necessário de entradas de contexto em puiTransitionContextCount.

  • Se pTransitionContexts não for nulo, a função a tratará como uma matriz de estruturas de comprimento puiTransitionContextCount. O tamanho da estrutura é dado por uiSizeOfContext, e deve ser o tamanho de SimpleContext ou CONTEXT para a arquitetura.

  • wszTextOut é gravado no seguinte formato:

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • Se o deslocamento em hexadecimal for 0x0, nenhum deslocamento será gravado.

  • Se não houver nenhum código gerenciado no thread atualmente no contexto, a função retornará SOS_E_NOMANAGEDCODE.

  • O parâmetro Flags é 0 ou SOS_STACKTRACE_SHOWADDRESSES para ver EBP e ESP na frente de cada linha module!functionname. Por padrão, ele é 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: SOS_Stacktrace.h

Versões do .NET Framework: Disponíveis desde 2.0

Confira também