Dela via


_EFN_StackTrace funktion

Tillhandahåller en textrepresentation av en hanterad stackspårning och en matris med CONTEXT poster, en för varje övergång mellan ohanterad och hanterad kod.

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

Parametrar

Client [i] Klienten debugged.

wszTextOut [ut] Textrepresentationen av stackspårningen.

puiTextLength [ut] En pekare till antalet tecken i wszTextOut.

pTransitionContexts [ut] Matrisen med övergångskontexter.

puiTransitionContextCount [ut] En pekare till antalet övergångskontexter i matrisen.

uiSizeOfContext [i] Storleken på kontextstrukturen.

Flags [i] Ange antingen 0 eller SOS_STACKTRACE_SHOWADDRESSES (0x01) för att visa EBP-registret och ange stackpekaren (ESP) framför varje module!functionname rad.

Kommentarer

Strukturen _EFN_StackTrace kan anropas från ett WinDbg-programmatiskt gränssnitt. Parametrar används på följande sätt:

  • Om wszTextOut är null och puiTextLength inte är null returnerar funktionen stränglängden i puiTextLength.

  • Om wszTextOut inte är null lagrar funktionen text upp wszTextOut till den plats som anges av puiTextLength. Den returnerar korrekt om det fanns tillräckligt med utrymme i bufferten eller returnerar E_OUTOFMEMORY om bufferten inte var tillräckligt lång.

  • Övergångsdelen av funktionen ignoreras om pTransitionContexts och puiTransitionContextCount är båda null. I det här fallet ger funktionen anropare textutdata för endast funktionsnamnen.

  • Om pTransitionContexts är null och puiTransitionContextCount inte är null returnerar funktionen det nödvändiga antalet kontextposter i puiTransitionContextCount.

  • Om pTransitionContexts inte är null behandlar funktionen den som en matris med längdstrukturer puiTransitionContextCount. Strukturstorleken anges av uiSizeOfContext, och måste vara storleken på SimpleContext eller CONTEXT för arkitekturen.

  • wszTextOut skrivs i följande format:

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • Om förskjutningen i hex är 0x0 skrivs ingen förskjutning.

  • Om det inte finns någon hanterad kod i tråden i kontexten returnerar funktionen SOS_E_NOMANAGEDCODE.

  • Parametern Flags är antingen 0 eller SOS_STACKTRACE_SHOWADDRESSES för att se EBP och ESP framför varje module!functionname rad. Som standard är det 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

Krav

Plattformar: Se Systemkrav.

Rubrik: SOS_Stacktrace.h

.NET Framework-versioner: Tillgänglig sedan 2.0

Se även