次の方法で共有


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

配列 Frames 内の項目数を指定 します

[out, optional] FrameContexts

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

[in] FrameContextsSize

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

[in] FrameContextsEntrySize

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

[out, optional] FramesFilled

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

戻り値

リターン コード 説明
S_OK
メソッドは正常に実行されました。
 

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

注釈

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

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

要件

要件
対象プラットフォーム デスクトップ
Header dbgeng.h (Dbgeng.h、Ntddk.h を含む)

こちらもご覧ください

GetStackTraceEx

IDebugControl5

OutputContextStackTraceEx

k、kb、kc、kd、kp、kP、kv (スタック バックトレースの表示)