_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。如果
pTransitionContexts
和puiTransitionContextCount
都是 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 起提供