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。 如果 NULL,则不会返回此信息。

[in] FramesSize

指定数组 中的项数。

[out, optional] FrameContexts

接收堆栈中每个帧的重新构造寄存器上下文。 此数组中的条目对应于 Frames 数组中的条目。 线程上下文的类型是目标有效处理器的 CONTEXT 结构。 如果 FrameContextsNULL,则不会返回此信息。

[in] FrameContextsSize

指定由 frameContexts 指向的内存的大小(以字节为单位)。 返回的堆栈帧数等于返回的上下文数, FrameContextsSize 必须等于 FramesSize 时间 FrameContextsEntrySize

[in] FrameContextsEntrySize

指定 FrameContexts中每个帧上下文的大小(以字节为单位)。

[out, optional] FramesFilled

接收在 FrameContexts 的数组和上下文中放置的帧数。 如果 FramesFilledNULL,则不会返回此信息。

返回值

返回代码 说明
S_OK
方法成功。
 

此方法还可以返回错误值。 有关详细信息,请参阅 返回值

注解

返回到 FramesFrameContexts 的 堆栈跟踪可以使用 OutputContextStackTrace 打印。

堆栈展开仅还原寄存器的子集很常见。 例如,堆栈展开不会始终还原易失性寄存器状态,因为易失寄存器是暂存寄存器,并且代码不需要保留它们。 未在展开时还原的寄存器将保留为还原的最后一个值,因此在使用未由展开还原的寄存器状态时应小心。

要求

要求 价值
目标平台 桌面
标头 dbgeng.h (包括 Dbgeng.h、Ntddk.h)

另请参阅

GetStackTrace

IDebugControl4

OutputContextStackTrace

k, kb, kc, kd, kp, kP, kv (显示堆栈回溯)