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 epuiTextLength
não for nulo, a função retornará o comprimento da cadeia de caracteres empuiTextLength
.Se
wszTextOut
não for nulo, a função armazenará o texto emwszTextOut
até o local indicado porpuiTextLength
. 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
epuiTransitionContextCount
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 epuiTransitionContextCount
não for nulo, a função retornará o número necessário de entradas de contexto empuiTransitionContextCount
.Se
pTransitionContexts
não for nulo, a função a tratará como uma matriz de estruturas de comprimentopuiTransitionContextCount
. O tamanho da estrutura é dado poruiSizeOfContext
, e deve ser o tamanho de SimpleContext ouCONTEXT
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 linhamodule!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