Freigeben über


_EFN_StackTrace-Funktion

Stellt eine Textdarstellung einer verwalteten Stapelüberwachung und ein Array von CONTEXT-Datensätzen bereit, einen Datensatz für jeden Übergang zwischen nicht verwaltetem und verwaltetem Code.

Syntax

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

Parameter

Client
[in] Der zu debuggende Client.

wszTextOut
[out] Die Textdarstellung der Stapelüberwachung.

puiTextLength
[out] Ein Zeiger auf die Anzahl der Zeichen in wszTextOut.

pTransitionContexts
[out] Das Array von Übergangskontexten.

puiTransitionContextCount
[out] Ein Zeiger auf die Anzahl der Übergangskontexte im Array.

uiSizeOfContext
[in] Die Größe der Kontextstruktur.

Flags
[in] Legen Sie diesen Wert entweder auf 0 oder SOS_STACKTRACE_SHOWADDRESSES (0x01) fest, um das EBP-Register und den erweiterten Stapelzeiger (ESP) vor jeder module!functionname-Zeile anzuzeigen.

Bemerkungen

Die _EFN_StackTrace-Struktur kann über eine befehlsorientierte WinDbg-Benutzerschnittstelle aufgerufen werden. Parameter werden wie folgt verwendet:

  • Wenn wszTextOut NULL und puiTextLength nicht NULL ist, gibt die Funktion die Zeichenfolgenlänge in puiTextLength zurück.

  • Wenn wszTextOut nicht NULL ist, speichert die Funktion Text in wszTextOut bis zu der Position, die durch puiTextLength angegeben wird. Wenn genügend Platz im Puffer vorhanden war, gibt die Rückgabe an, dass der Vorgang erfolgreich war. Wenn der Puffer nicht lang genug war, wird E_OUTOFMEMORY zurückgegeben.

  • Der Übergangsteil der Funktion wird ignoriert, wenn pTransitionContexts und puiTransitionContextCount beide NULL sind. In diesem Fall stellt die Funktion Aufrufern als Textausgabe nur die Funktionsnamen zur Verfügung.

  • Wenn pTransitionContexts NULL und puiTransitionContextCount nicht NULL ist, gibt die Funktion die erforderliche Anzahl von Kontexteinträgen in puiTransitionContextCount zurück.

  • Wenn pTransitionContexts nicht NULL ist, behandelt die Funktion die Ausgabe als Array von Strukturen der Länge puiTransitionContextCount. Die Strukturgröße wird durch uiSizeOfContext angegeben und muss die Größe von SimpleContext oder CONTEXT für die Architektur sein.

  • wszTextOut wird im folgenden Format ausgegeben:

    "<ModuleName>!<Function Name>[+<offset in hex>]  
    ...  
    (TRANSITION)  
    ..."  
    
  • Wenn der hexadezimale Offset 0x0 ist, wird kein Offset ausgegeben.

  • Wenn für den Thread im derzeitigen Kontext kein verwalteter Code vorhanden ist, gibt die Funktion SOS_E_NOMANAGEDCODE zurück.

  • Der Flags-Parameter ist entweder 0 oder SOS_STACKTRACE_SHOWADDRESSES, wenn EBP und ESP vor jeder module!functionname-Zeile angezeigt werden. Er ist standardmäßig auf „0“ festgelegt.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001  
    

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: SOS_Stacktrace.h

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch