次の方法で共有


IDebugControl4::GetContextStackTrace メソッド (dbgeng.h)

GetContextStackTrace メソッドは、呼び出し履歴の先頭にあるフレームを返し、任意のレジスタ コンテキストから始まり、各スタック フレームの再構築されたレジスタ コンテキストを返します。

構文

HRESULT GetContextStackTrace(
  [in, optional]  PVOID              StartContext,
  [in]            ULONG              StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME 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 に返されるスタック トレースは、OutputContextStackTrace を使用して出力できます。

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

要件

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

こちらもご覧ください

GetStackTrace

IDebugControl4

OutputContextStackTrace

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