DkmStackFrame 类

定义

DkmStackFrame 表示筛选和转换后调用堆栈上的帧。

public ref class DkmStackFrame : Microsoft::VisualStudio::Debugger::CallStack::DkmStackWalkFrame
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmStackFrame : Microsoft::VisualStudio::Debugger::CallStack::DkmStackWalkFrame
[Windows::Foundation::Metadata::WebHostHidden]
class DkmStackFrame : Microsoft::VisualStudio::Debugger::CallStack::DkmStackWalkFrame
[System.Runtime.InteropServices.Guid("9e32fe11-196e-a0ec-b83c-0792427e91a2")]
public class DkmStackFrame : Microsoft.VisualStudio.Debugger.CallStack.DkmStackWalkFrame
[<System.Runtime.InteropServices.Guid("9e32fe11-196e-a0ec-b83c-0792427e91a2")>]
type DkmStackFrame = class
    inherit DkmStackWalkFrame
Public Class DkmStackFrame
Inherits DkmStackWalkFrame
继承
DkmStackFrame
属性

属性

AnnotatedModule

[可选]如果有带批注的帧,则 指定要与此帧关联的可选模块实例。 如果存在,用户可以通过在调用堆栈窗口中右键单击此帧来加载此模块的二进制文件或符号。 对于未批注的帧,这是 NULL。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

(继承自 DkmStackWalkFrame)
Annotations

[可选]堆栈帧批注的只读集合。 它们由展开器定义,特定于该展开器。 一个示例用法是如何将内联帧数据从内联堆栈筛选器传递到格式化程序。

(继承自 DkmStackWalkFrame)
AsyncContext

[可选]用于遍程异步返回堆栈和任务创建堆栈的可选上下文。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

(继承自 DkmStackWalkFrame)
BasicSymbolInfo

[可选]包含与帧的 InstructionAddress 对应的 DkmInstructionSymbol 的基本信息。 对于本机帧,这将在帧传递到堆栈筛选器之前由 StackProvider 计算。

对于 DkmStackFrame,这始终为 null。

此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引入的。

(继承自 DkmStackWalkFrame)
CompilerId

生成此堆栈帧代码的编译器的 LanguageId/VendorId。 如果此为未知 (例如:没有为此模块加载符号) ,则这两个值都将为 Guid.Empty。 否则,这两个值应为非零。

Connection

这表示监视器与 IDE 之间的连接。 如果监视器与 IDE 在同一进程中运行,则它可以是本地连接,也可以是远程连接。 在监视过程中,只有一个连接。

(继承自 DkmStackWalkFrame)
Data

[可选]要附加到 DkmStackWalkFrame 的可选对象,允许组件将其他私有数据与帧相关联。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

(继承自 DkmStackWalkFrame)
Description

[可选]将在调用堆栈窗口中显示的帧的说明。 这应该为带批注的帧提供。

(继承自 DkmStackWalkFrame)
Flags

标记 DkmStackWalkFrame 的属性。

(继承自 DkmStackWalkFrame)
FrameBase

帧的基堆栈指针。 这由 SDM 用于对帧进行排序,堆栈合并使用它来评估步进进度,因此即使是批注帧也需要此值。 只有在调试对象的堆栈已损坏的情况下,此值才应无效。

(继承自 DkmStackWalkFrame)
FrameName

堆栈帧的名称。 DkmStackFrame.FormatOptions 确定函数名称的格式。

FrameSize

此帧使用的堆栈的字节数。 对于带批注的帧,此值将为零;如果该值未知,则此值为零。

(继承自 DkmStackWalkFrame)
InstructionAddress

[可选]此帧的指令。 对于带批注的帧,可以省略这一点。

(继承自 DkmStackWalkFrame)
IsStale

指定在“编辑并继续”之后此堆栈帧是否过时。

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

ModuleInstance

[可选]包含此地址的模块。 即使对于) 自定义地址,没有模块的地址也不能有符号 (。 CLR 地址将始终有一个模块。 如果 CPU 跳转到无效地址 (例如 NULL) ,或者 CPU 正在执行动态发出的代码,则本机地址将没有模块。

(继承自 DkmStackWalkFrame)
Options

影响堆栈提供程序如何设置 DkmStackFrame 格式的设置集合。

Priority

堆栈演练帧的优先级。 这通常用于检测到问题的批注帧。

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

(继承自 DkmStackWalkFrame)
Process

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

(继承自 DkmStackWalkFrame)
Registers

[可选]所走帧的寄存器。 应为未带批注的帧提供这些。

(继承自 DkmStackWalkFrame)
ReturnType

[可选]堆栈帧的返回类型的名称。 仅当设置了 DkmFrameNameFormatOptions.ReturnTypeField 时,才提供此选项。

RuntimeInstance

[可选]DkmRuntimeInstance 类表示加载到 DkmProcess 中的执行环境,其中包含要调试的代码。

(继承自 DkmStackWalkFrame)
SourcePosition

[可选]此堆栈帧的源代码位置。 仅当设置了 DkmFrameNameFormatOptions.DocumentPositionField 时,才提供此选项。

Thread

此堆栈帧位于的线程。

(继承自 DkmStackWalkFrame)
UniqueId

DkmStackWalkFrame 的唯一标识符。 在远程调试方案中,如果帧是从较旧的 IDE/远程调试器封送的,则可能GUID_NULL/Guid.Empty。

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

(继承自 DkmStackWalkFrame)

方法

CanSetNextStatement(DkmInstructionAddress)

CanSetNextStatement 确定是否可以移动堆栈帧的 IP。 堆栈帧始终是特定线程上的叶堆栈帧。 此 API 只能在引擎进程中实现。 应S_OK Result out 参数或 UI 可以映射到错误消息的失败 HRESULT 的值。

位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。

(继承自 DkmStackWalkFrame)
ComputeUserStatus(DkmInspectionSession, Boolean)

确定帧是否为用户代码。

位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

(继承自 DkmStackWalkFrame)
Create(DkmStackWalkFrame, DkmFrameFormatOptions, DkmCompilerId, String, String, DkmSourcePosition)

Create新的 DkmStackFrame 对象实例。

位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。

Create(DkmStackWalkFrame, DkmFrameFormatOptions, DkmCompilerId, String, String, DkmSourcePosition, Boolean)

Create新的 DkmStackFrame 对象实例。

位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。

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

ExtractFromAD7Object(IDebugStackFrame2)

从 AD7 堆栈帧对象获取 DkmStackFrame。 希望访问 Concord API 以获取有关已调试进程的更多详细信息的 Visual Studio 包或加载项使用此 API。 此 API 仅在 Visual Studio 的main线程中正常运行。

ExtractFromDTEObject(StackFrame)

从 DTE (调试器自动化) 堆栈帧对象获取 DkmStackFrame。 希望访问 Concord API 以获取有关已调试进程的更多详细信息的 Visual Studio 包或加载项使用此 API。 自动化对象通常从“OnContextChanged”自动化事件或从 Debugger.CurrentStackFrame 属性获取。 此 API 仅在 Visual Studio 的main线程中正常运行。

Format(DkmInspectionSession, DkmFrameFormatOptions)

将 DkmStackWalkFrame 格式化为 DkmStackFrame。 设置帧格式是堆栈提供程序在 GetNextFrames 期间执行的操作的一个步骤。 此方法可用于以与 GetNextFrames 中的堆栈提供程序最初执行的方式不同的方式设置帧的格式。

位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。

(继承自 DkmStackWalkFrame)
GetClrGenericParameters()

获取当前堆栈帧的泛型参数,作为程序集限定名称的列表。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

(继承自 DkmStackWalkFrame)
GetClrGenericParameters(DkmWorkList, DkmCompletionRoutine<DkmGetClrGenericParametersAsyncResult>)

获取当前堆栈帧的泛型参数,作为程序集限定名称的列表。

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

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

(继承自 DkmStackWalkFrame)
GetEffectiveAddresses(DkmInstructionAddress)

计算并返回所请求地址的有效地址的方法。 有效地址是指令操作数表示的计算地址。 例如,在 x86 上,指令的格式可能是 dwordptr [esp-12]。 此操作数的有效地址将是从 esp 中减去 12 的结果。操作数和有效地址的数量是特定于体系结构的。

位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。

GetInspectionInterface(DkmInspectionSession, Guid)

GetInspectionInterface 用于获取 ICorDebugFrame 或其他特定于实现的接口,组件可以使用这些接口来深入检查堆栈帧。

返回的接口只能用于检查目标进程,并且绝不应用于控制执行 (无单步执行、无断点、无继续等) 。 不支持这样做,将导致未定义的行为。 注意:出于性能原因,不建议从托管代码使用此方法。 在本机代码和托管代码之间封送 DkmStackWalkFrame 的成本很高。 请改用 DkmRuntimeInstance.GetFrameInspectionInterface。

位置约束:必须从目标运行时实现堆栈遍程或加载符号的同一进程调用此 API。 对于托管调试,这意味着在调试 64 位或远程进程时,必须从调试监视器组件调用此 API。

(继承自 DkmStackWalkFrame)
GetInstructionSymbol()

返回堆栈帧的 DkmInstructionSymbol。 如果堆栈帧没有指令地址 (批注帧) ,或者指令地址没有关联的 DkmModule,则 GetInstructionSymbol 将在本机代码) 返回 null (S_FALSE。

(继承自 DkmStackWalkFrame)
GetProperty(ICorDebugValue, String)

计算给定 ICorDebugValue 上的属性。 值的类型必须由调用此 $Name$ 的 DkmStackWalkFrame 的 DkmClrAppDomain 加载。

位置约束:这必须位于远程端,因为我们要传递 ICorDebugHandleValue。

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

(继承自 DkmStackWalkFrame)
GetUnwindAddress(DkmInstructionAddress)

返回一个地址,该地址表示在此帧中截获异常时的位置。

(继承自 DkmStackWalkFrame)
InterceptCurrentException(DkmExceptionInterceptActionFlags, UInt64)

InterceptCurrentException 用于展开到此帧,就像该帧中存在异常处理程序一样。

(继承自 DkmStackWalkFrame)
OnSetNextStatementCompleted(DkmInstructionAddress)

OnSetNextStatementCompleted 是一种常规用途方法,允许组件在设置下一个语句完成后清除状态。 DkmStackWalkFrame 将是 SetNextStatement 调用之前的帧。

位置约束:通常只能从客户端组件调用此 API。 但是,如果从事件处理程序调用 set next 语句,则监视端组件可以安全地调用此 API。

(继承自 DkmStackWalkFrame)
SetNextStatement(DkmInstructionAddress)

SetNextStatement 移动堆栈帧的 IP。 堆栈帧始终是特定线程上的叶堆栈帧。

(继承自 DkmStackWalkFrame)

适用于