共用方式為


_EFN_StackTrace 函式

提供 Managed 堆疊追蹤以及 CONTEXT 記錄之陣列的文字表示,再各提供一個文字表示給 Unmanaged 和 Managed 程式碼之間的每個轉換。

語法

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

參數

Client [in]正在偵錯的用戶端。

wszTextOut [out]堆疊追蹤的文字表示。

puiTextLength [out]中 wszTextOut字元數的指標。

pTransitionContexts [out]轉換內容的陣列。

puiTransitionContextCount [out]陣列中轉換內容數目的指標。

uiSizeOfContext [in]內容結構的大小。

Flags [in]設定為 0 或 SOS_STACKTRACE_SHOWADDRESSES (0x01) 以顯示 EBP 快取器,並在每 module!functionname 一行前面輸入堆疊指標 (ESP) 。

備註

_EFN_StackTrace結構可以從 WinDbg 程式設計介面呼叫。 參數的使用方式如下:

  • 如果 wszTextOut 為 null 且 puiTextLength 不是 Null,則函式會傳回 中的 puiTextLength字串長度。

  • 如果 wszTextOut 不是 Null,函式會將文字儲存在 wszTextOut 所指示 puiTextLength的位置。 如果緩衝區中有足夠的空間,則會成功傳回 ,如果緩衝區不夠長,則會傳回E_OUTOFMEMORY。

  • 如果 pTransitionContextspuiTransitionContextCount 都是 null,則會忽略函式的轉換部分。 在此情況下,函式只會提供函式名稱的文字輸出給呼叫端。

  • 如果 pTransitionContexts 為 null 且 puiTransitionContextCount 不是 null,則函式會傳回 中 puiTransitionContextCount的必要內容項目數目。

  • 如果 pTransitionContexts 不是 Null,函式會將它視為長度 puiTransitionContextCount的結構數位。 結構大小是由 uiSizeOfContext指定,而且 必須是 SimpleContext 的大小CONTEXT架構的大小。

  • wszTextOut 是以下欄格式撰寫:

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • 如果十六進位移0x0,則不會寫入位移。

  • 如果目前在內容中線程上沒有 Managed 程式代碼,函式會傳回SOS_E_NOMANAGEDCODE。

  • 參數 Flags 為 0 或 SOS_STACKTRACE_SHOWADDRESSES,以在每個行前面 module!functionname 看到 EBP 和 ESP。 根據預設,它是 0。

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

需求

平台:請參閱系統需求

標頭: SOS_Stacktrace.h

.NET Framework 版本: 自 2.0 起提供

另請參閱