Funzione _EFN_StackTrace

Fornisce una rappresentazione testuale di una traccia dello stack gestito e una matrice di record CONTEXT, uno per ogni transizione tra codice non gestito e gestito.

Sintassi

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

Parametri

Client
[in] Il client sottoposto a debug.

wszTextOut
[out] Rappresentazione del testo della traccia dello stack.

puiTextLength
[out] Puntatore al numero di caratteri in wszTextOut.

pTransitionContexts
[out] Matrice di contesti di transizione.

puiTransitionContextCount
[out] Puntatore al numero di contesti di transizione nella matrice.

uiSizeOfContext
[in] Dimensione della struttura del contesto.

Flags
[in] Impostare su 0 o SOS_STACKTRACE_SHOWADDRESSES (0x01) per visualizzare il registro EBP e il puntatore dello stack (ESP) immesso davanti a ogni module!functionname riga.

Commenti

La _EFN_StackTrace struttura può essere chiamata da un'interfaccia programmatica WinDbg. I parametri vengono usati come segue:

  • Se wszTextOut è Null e puiTextLength non è Null, la funzione restituisce la lunghezza della stringa in puiTextLength.

  • Se wszTextOut non è Null, la funzione archivia il testo fino wszTextOut alla posizione indicata da puiTextLength. Restituisce correttamente se nel buffer c'era spazio sufficiente o restituisce E_OUTOFMEMORY se il buffer non era abbastanza lungo.

  • La parte di transizione della funzione viene ignorata se pTransitionContexts e puiTransitionContextCount sono entrambi Null. In questo caso, la funzione fornisce ai chiamanti l'output di testo solo dei nomi di funzione.

  • Se pTransitionContexts è Null e puiTransitionContextCount non è Null, la funzione restituisce il numero necessario di voci di contesto in puiTransitionContextCount.

  • Se pTransitionContexts non è Null, la funzione lo considera come una matrice di strutture di lunghezza puiTransitionContextCount. Le dimensioni della struttura sono specificate da uiSizeOfContexte devono essere le dimensioni di SimpleContext o CONTEXT per l'architettura.

  • wszTextOut è scritto nel formato seguente:

    "<ModuleName>!<Function Name>[+<offset in hex>]  
    ...  
    (TRANSITION)  
    ..."  
    
  • Se l'offset nell'hex è 0x0, non viene scritto alcun offset.

  • Se non è presente codice gestito nel thread attualmente nel contesto, la funzione restituisce SOS_E_NOMANAGEDCODE.

  • Il Flags parametro è 0 o SOS_STACKTRACE_SHOWADDRESSES per visualizzare EBP e ESP davanti a ogni module!functionname riga. Per impostazione predefinita, è 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001  
    

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: SOS_Stacktrace.h

Versioni di .NET Framework: Disponibile da 2.0

Vedi anche