Sdílet prostřednictvím


_EFN_StackTrace – funkce

Poskytuje textovou reprezentaci trasování spravovaného zásobníku a pole CONTEXT záznamů, jeden pro každý přechod mezi nespravovaným a spravovaným kódem.

Syntaxe

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

Parametry

Client
[v] Laděný klient.

wszTextOut
[out] Textová reprezentace trasování zásobníku

puiTextLength
[out] Ukazatel na počet znaků v wszTextOut.

pTransitionContexts
[out] Pole kontextů přechodu.

puiTransitionContextCount
[out] Ukazatel na počet kontextů přechodu v poli.

uiSizeOfContext
[v] Velikost kontextové struktury

Flags
[v] Nastavením hodnoty 0 nebo SOS_STACKTRACE_SHOWADDRESSES (0x01) zobrazíte registr EBP a před každým module!functionname řádkem zadáte ukazatel zásobníku (ESP).

Poznámky

Strukturu _EFN_StackTrace lze volat z programového rozhraní WinDbg. Parametry se používají takto:

  • Pokud wszTextOut je hodnota null a puiTextLength není null, vrátí funkce délku řetězce v puiTextLength.

  • Pokud wszTextOut nemá hodnotu null, uloží funkce text wszTextOut až do umístění označeného parametrem puiTextLength. Vrátí se úspěšně, pokud je ve vyrovnávací paměti dostatek místa, nebo vrátí E_OUTOFMEMORY, pokud vyrovnávací paměť nebyla dostatečně dlouhá.

  • Přechodová část funkce se ignoruje, pokud pTransitionContextspuiTransitionContextCount i mají hodnotu null. V tomto případě funkce poskytuje volajícím textový výstup pouze s názvy funkcí.

  • Pokud pTransitionContexts je hodnota null a puiTransitionContextCount není null, vrátí funkce potřebný počet kontextových položek v puiTransitionContextCountsouboru .

  • Pokud pTransitionContexts není null, funkce ji považuje za pole struktur délky puiTransitionContextCount. Velikost struktury je daná parametrem uiSizeOfContexta musí se jednat o velikost SimpleContext nebo CONTEXT pro danou architekturu.

  • wszTextOut je napsán v následujícím formátu:

    "<ModuleName>!<Function Name>[+<offset in hex>]  
    ...  
    (TRANSITION)  
    ..."  
    
  • Pokud je posun v šestnáctkovém formátu 0x0, nezapíše se žádný posun.

  • Pokud vlákno aktuálně v kontextu neobsahuje žádný spravovaný kód, vrátí funkce SOS_E_NOMANAGEDCODE.

  • Parametr Flags je 0 nebo SOS_STACKTRACE_SHOWADDRESSES, aby se ebp a ESP zobrazovaly před každou module!functionname čárou. Ve výchozím nastavení je to 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001  
    

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: SOS_Stacktrace.h

Verze rozhraní .NET Framework: K dispozici od verze 2.0

Viz také