_EFN_StackTrace 関数
マネージド スタック トレースのテキスト表現および CONTEXT
レコードの配列 (アンマネージド コードとマネージド コードの間の各移行につき 1 つ) を提供します。
構文
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]EBP レジスタと enter スタック ポインター (ESP) を各 module!functionname
行の前に表示するには、0 またはSOS_STACKTRACE_SHOWADDRESSES (0x01) に設定します。
解説
_EFN_StackTrace
構造体は、WinDbg プログラム インターフェイスから呼び出すことができます。 パラメーターは次のように使用されます。
wszTextOut
が null で、puiTextLength
が null でない場合、関数はpuiTextLength
の文字列長を返します。wszTextOut
が null でない場合、関数はpuiTextLength
によって示される場所までのテキストをwszTextOut
に格納します。 バッファーに十分な空き領域があった場合は、正常に返されます。バッファーの長さが十分でなかった場合は、E_OUTOFMEMORY が返されます。pTransitionContexts
とpuiTransitionContextCount
が両方とも null の場合、関数の遷移部分は無視され ます。 この場合、関数は呼び出し元に関数名のみのテキスト出力を提供します。pTransitionContexts
が null で、puiTransitionContextCount
が null でない場合、関数はpuiTransitionContextCount
で必要なコンテキスト エントリの数を返します。pTransitionContexts
が null でない場合、関数はそれを長さpuiTransitionContextCount
の構造体の配列として扱います。 構造体のサイズはuiSizeOfContext
によって指定され、SimpleContext またはアーキテクチャのCONTEXT
のサイズである必要があります。wszTextOut
は次の形式で記述されます。"<ModuleName>!<Function Name>[+<offset in hex>] ... (TRANSITION) ..."
16 進数のオフセットが 0x0 の場合、オフセットは書き込まれません。
現在コンテキスト内にあるスレッドにマネージド コードがない場合、関数は SOS_E_NOMANAGEDCODE を返します。
Flags
パラメーターは、それぞれのmodule!functionname
行の前に EBP と ESP を表示する場合は 0 または SOS_STACKTRACE_SHOWADDRESSES のいずれかです。 既定では 0 です。#define SOS_STACKTRACE_SHOWADDRESSES 0x00000001
必要条件
:「システム要件」を参照してください。
ヘッダー: SOS_Stacktrace.h
.NET Framework のバージョン: 2.0 以降で使用可能
関連項目
.NET