Aracılığıyla paylaş


_EFN_StackTrace İşlevi

Yönetilmeyen ve yönetilen kod arasındaki her geçiş için bir tane olmak üzere yönetilen yığın izlemesinin ve bir kayıt dizisinin CONTEXT metin gösterimini sağlar.

Sözdizimi

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

Parametreler

Client [in] Hata ayıklanan istemci.

wszTextOut [out] Yığın izlemesinin metin gösterimi.

puiTextLength [out] içindeki wszTextOutkarakter sayısına işaret eden bir işaretçi.

pTransitionContexts [out] Geçiş bağlamları dizisi.

puiTransitionContextCount [out] Dizideki geçiş bağlamlarının sayısına yönelik bir işaretçi.

uiSizeOfContext [in] Bağlam yapısının boyutu.

Flags [in] EBP kaydını ve her module!functionname satırın önünde yığın işaretçisini (ESP) girmek için 0 veya SOS_STACKTRACE_SHOWADDRESSES (0x01) olarak ayarlayın.

Açıklamalar

Yapı _EFN_StackTrace , WinDbg program arabiriminden çağrılabilir. Parametreler aşağıdaki gibi kullanılır:

  • wszTextOut null ise ve puiTextLength null değilse, işlevi içindeki puiTextLengthdize uzunluğunu döndürür.

  • null değilse wszTextOut , işlevi metni wszTextOut ile puiTextLengthbelirtilen konuma kadar depolar. Arabellekte yeterli yer varsa başarıyla döndürür veya arabellek yeterince uzun değilse E_OUTOFMEMORY döndürür.

  • her ikisi de null olduğunda pTransitionContexts puiTransitionContextCount işlevin geçiş bölümü yoksayılır. Bu durumda işlev, çağıranlara yalnızca işlev adlarının metin çıkışını sağlar.

  • pTransitionContexts null ise ve puiTransitionContextCount null değilse, işlevi içinde puiTransitionContextCountgerekli sayıda bağlam girdisi döndürür.

  • null değilse pTransitionContexts , işlevi bunu uzunluk puiTransitionContextCountyapıları dizisi olarak kabul eder. Yapı boyutu tarafından uiSizeOfContextverilir ve SimpleContext veya CONTEXT mimari için boyutu olmalıdır.

  • wszTextOut aşağıdaki biçimde yazılır:

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • Onaltılıktaki uzaklık 0x0 ise, hiçbir uzaklık yazılır.

  • İş parçacığında şu anda bağlamda yönetilen kod yoksa işlev SOS_E_NOMANAGEDCODE döndürür.

  • Her satırın Flags önünde module!functionname EBP ve ESP'yi görmek için parametresi 0 veya SOS_STACKTRACE_SHOWADDRESSES. Varsayılan olarak 0'dır.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

Gereksinimler

Platformlar: Bkz. Sistem Gereksinimleri.

Üst bilgi: SOS_Stacktrace.h

.NET Framework Sürümleri: 2.0 sürümünden itibaren kullanılabilir

Ayrıca bkz.