次の方法で共有


IDebugControl5::GetContextStackTraceEx メソッド (dbgeng.h)

GetContextStackTraceEx メソッドは、任意のレジスタ コンテキストから始まり、各スタック フレームの再構築された レジスタ コンテキスト を返して、呼び出し履歴の先頭にあるフレームを返します。 GetContextStackTraceEx メソッドは、インライン フレームのサポートを提供します。 インライン関数の操作の詳細については、「最適化されたコードのデバッグとインライン関数の」を参照してください。

構文

HRESULT GetContextStackTraceEx(
  [in, optional]  PVOID                 StartContext,
  [in]            ULONG                 StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME_EX Frames,
  [in]            ULONG                 FramesSize,
  [out, optional] PVOID                 FrameContexts,
  [in]            ULONG                 FrameContextsSize,
  [in]            ULONG                 FrameContextsEntrySize,
  [out, optional] PULONG                FramesFilled
);

パラメーター

[in, optional] StartContext

スタックの先頭のレジスタ コンテキストを指定します。

[in] StartContextSize

StartContext レジスタ コンテキストのサイズをバイト単位で指定します。

[out, optional] Frames

スタック フレームを受け取ります。 この配列が保持する要素の数は、FrameSize です。 FramesNULL の場合、この情報は返されません。

[in] FramesSize

配列フレーム内の項目の数を指定 します

[out, optional] FrameContexts

スタック内の各フレームの再構築されたレジスタ コンテキストを受け取ります。 この配列内のエントリは、Frames 配列内のエントリに対応します。 スレッド コンテキストの型は、ターゲットの有効なプロセッサの CONTEXT 構造体です。 FrameContextsNULL の場合、この情報は返されません。

[in] FrameContextsSize

FrameContextsが指すメモリのサイズ (バイト単位) を指定します。 返されるスタック フレームの数は返されるコンテキストの数と等しく、FrameContextsSize は FrameContextsEntrySizeFrameContexts 倍である必要があります。

[in] FrameContextsEntrySize

FrameContextsの各フレーム コンテキストのサイズをバイト単位で指定します。

[out, optional] FramesFilled

FrameContexts の配列 Frames とコンテキストに配置されたフレームの数を受け取ります。 FramesFilled が NULL 場合、この情報は返されません。

戻り値

リターン コード 説明
S_OK
メソッドは成功しました。
 

このメソッドは、エラー値を返すこともできます。 詳細については、「戻り値 を参照してください。

注釈

Frames および FrameContexts に返されるスタック トレースは、OutputContextStackTraceEx を使用して出力できます。

スタック アンワインドでは、レジスタのサブセットのみを復元するのが一般的です。 たとえば、スタック アンワインドでは、揮発性レジスタはスクラッチ レジスタであり、コードで保持する必要がないため、揮発性レジスタの状態が常に復元されるとは限りません。 アンワインド時に復元されないレジスタは、最後に復元された値のままであるため、アンワインドによって復元されない可能性があるレジスタの状態を使用する場合は注意が必要です。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー dbgeng.h (Dbgeng.h、Ntddk.h を含む)

こちらもご覧ください

GetStackTraceEx を する

IDebugControl5 の

OutputContextStackTraceEx の

k、kb、kc、kd、kp、kP、kv (Display Stack Backtrace)