通过


DkmStackWalkContext 类

定义

DkmStackWalkContext 允许遍历、筛选或检查调用堆栈的各种组件存储与此调用堆栈关联的专用数据。

public ref class DkmStackWalkContext : Microsoft::VisualStudio::Debugger::DkmDataContainer, IDisposable
[System.Runtime.InteropServices.Guid("33ebb282-734b-c2f3-66cd-c42eb8a3d490")]
public class DkmStackWalkContext : Microsoft.VisualStudio.Debugger.DkmDataContainer, IDisposable
[<System.Runtime.InteropServices.Guid("33ebb282-734b-c2f3-66cd-c42eb8a3d490")>]
type DkmStackWalkContext = class
    inherit DkmDataContainer
    interface IDisposable
Public Class DkmStackWalkContext
Inherits DkmDataContainer
Implements IDisposable
继承
DkmStackWalkContext
继承
DkmStackWalkContext
属性
实现

属性

Flags

用于控制堆栈演练期间返回的帧的标志。

此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。

IsUnloaded

如果已为此对象引发“unloaded”事件,则返回 true (示例:DkmThread::Unload) 或对象已关闭。 请注意,检查此状态时必须小心,因为如果不进行同步,则返回的状态在读取指令后可能不再准确。

(继承自 DkmDataContainer)
Process

DkmProcess 表示正在调试的目标进程。 调试器调试进程,因此这是调试的基本单元。 DkmProcess 可以表示系统进程或虚拟进程,例如最小枚举。

Thread

DkmThread 表示在目标进程中运行的线程。

ThreadContext

[可选]执行堆栈演练时要使用的初始 Win32 上下文。 此值通常为“null”,但可以设置为查看另一个调用堆栈 (例如:.cxr) 。

TopStackPointer

顶部堆栈帧的堆栈指针。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。

UniqueId

唯一标识此 DkmStackWalkContext 的 Guid。

方法

Close()

关闭 DkmStackWalkContext 对象实例。 这将跨所有组件释放与此对象关联的任何资源。 这包括跨计算机或托管/本机封送边界的资源。

DkmStackWalkContext 对象在关闭关联的 DkmThread 对象时自动关闭。

Create(DkmThread, ReadOnlyCollection<Byte>, DkmDataItem)

Create新的 DkmStackWalkContext 对象实例。

Create(DkmThread, ReadOnlyCollection<Byte>, UInt64, DkmDataItem)

Create新的 DkmStackWalkContext 对象实例。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。

Create(DkmThread, ReadOnlyCollection<Byte>, UInt64, DkmStackWalkContextFlags, DkmDataItem)

Create新的 DkmStackWalkContext 对象实例。

此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。

FindSymbolStackWalkContext(Guid)

在此 DkmStackWalkContext 中查找 DkmSymbolStackWalkContext 元素。 如果不存在具有给定输入键的元素,FindSymbolStackWalkContext 将失败。

GetDataItem<T>()

获取已添加到此容器实例的“T”实例。 如果此容器不包含“T”,则此函数将返回 null。

(继承自 DkmDataContainer)
HeuristicWalkFrames(DkmFrameRegisters, UInt32, UInt64, DkmFrameRegisters, Boolean)

尝试使用启发式堆栈遍历算法遍历堆栈的区域。 当没有可用的符号时,这将在 x86 中使用。 它不会在其他平台上实现,因为 PDATA 允许遍走所有帧。

HeuristicWalkFrames(DkmWorkList, DkmFrameRegisters, UInt32, UInt64, DkmCompletionRoutine<DkmHeuristicWalkFramesAsyncResult>)

尝试使用启发式堆栈遍历算法遍历堆栈的区域。 当没有可用的符号时,这将在 x86 中使用。 它不会在其他平台上实现,因为 PDATA 允许遍走所有帧。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

RemoveDataItem<T>()

从此容器中删除“T”的实例。 通常不需要调用此方法,因为数据容器将在对象关闭时自动清空。

(继承自 DkmDataContainer)
RuntimeWalkNextFrames(DkmWorkList, UInt32, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAsyncResult>)

尝试在不使用符号的情况下遍走堆栈。 这将调用各种组件,这些组件知道如何遍历堆栈 (例如:CLR 调试监视器) 将遍历 CLR 帧。 对于没有符号文件中存储的信息,堆栈部分将保留一个“未解析”帧。 这些“未解析”帧没有 InstructionAddress 或 Description。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

RuntimeWalkNextFrames(UInt32, Boolean)

尝试在不使用符号的情况下遍走堆栈。 这将调用各种组件,这些组件知道如何遍历堆栈 (例如:CLR 调试监视器) 将遍历 CLR 帧。 对于没有符号文件中存储的信息,堆栈部分将保留一个“未解析”帧。 这些“未解析”帧没有 InstructionAddress 或 Description。

RuntimeWalkNextFramesAndCheckCache(DkmWorkList, UInt32, UInt32, DkmStackHash, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult>)

已弃用。 请勿使用此方法,它将返回过期的哈希值;请改用 IDkmMergedMonitorStackWalk164::RuntimeWalkNextFramesAndCheckCache164。 RuntimeWalkNextFrames () 版本,还会检查调用堆栈的缓存副本是否仍然有效。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

RuntimeWalkNextFramesAndCheckCache(UInt32, UInt32, DkmStackHash, Boolean, DkmStackHash, DkmStackWalkContext, Boolean)

已弃用。 请勿使用此方法,它将返回过期的哈希值;请改用 IDkmMergedMonitorStackWalk164::RuntimeWalkNextFramesAndCheckCache164。 RuntimeWalkNextFrames () 版本,还会检查调用堆栈的缓存副本是否仍然有效。

RuntimeWalkNextFramesAndCheckCache164(DkmWorkList, UInt32, UInt32, DkmStackHash164, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCache164AsyncResult>)

RuntimeWalkNextFrames () 版本,还会检查调用堆栈的缓存副本是否仍然有效。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

此 API 是在 Visual Studio 16 Update 4 (DkmApiVersion.VS16Update4) 中引入的。

RuntimeWalkNextFramesAndCheckCache164(UInt32, UInt32, DkmStackHash164, Boolean, DkmStackHash164, DkmStackWalkContext, Boolean)

RuntimeWalkNextFrames () 版本,还会检查调用堆栈的缓存副本是否仍然有效。

此 API 是在 Visual Studio 16 Update 4 (DkmApiVersion.VS16Update4) 中引入的。

SetDataItem<T>(DkmDataCreationDisposition, T)

将新项放在数据容器中。

(继承自 DkmDataContainer)

显式接口实现

IDisposable.Dispose()

DkmStackWalkContext 允许遍历、筛选或检查调用堆栈的各种组件存储与此调用堆栈关联的专用数据。

适用于