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。 如果 Frames 为 NULL,则不返回此信息。
[in] FramesSize
指定数组 帧中的项数。
[out, optional] FrameContexts
接收堆栈中每个帧的重新构造的寄存器上下文。 此数组中的条目对应于 Frames 数组中的条目。 线程上下文的类型是目标有效处理器的 CONTEXT 结构。 如果 FrameContexts 为 NULL,则不返回此信息。
[in] FrameContextsSize
指定 FrameContexts 指向的内存的大小(以字节为单位)。 返回的堆栈帧数等于返回的上下文数, FrameContextsSize 必须等于 FramesSize 乘以 FrameContextsEntrySize。
[in] FrameContextsEntrySize
指定 FrameContexts 中每个帧上下文的大小(以字节为单位)。
[out, optional] FramesFilled
接收放置在 FrameContexts 中的数组帧和上下文中的帧数。 如果 FramesFilled 为 NULL,则不返回此信息。
返回值
返回代码 | 说明 |
---|---|
|
方法成功。 |
此方法还可以返回错误值。 有关详细信息,请参阅 返回值。
注解
可以使用 OutputContextStackTraceEx 打印返回到 Frames 和 FrameContext 的堆栈跟踪。
堆栈展开通常只还原一部分寄存器。 例如,堆栈展开不会始终还原易失性寄存器状态,因为易失性寄存器是暂存寄存器,代码不需要保留它们。 未在展开时还原的寄存器将保留为最后一个还原值,因此在使用可能无法由展开还原的寄存器状态时应小心。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | dbgeng.h (包括 Dbgeng.h、Ntddk.h) |