DkmCustomInstructionSymbol 类

定义

DkmCustomInstructionSymbol 用于表示任何类型的自定义运行时环境中的可执行语句。

public ref class DkmCustomInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmCustomInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
class DkmCustomInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[System.Runtime.InteropServices.Guid("c154cde9-82a7-6e6f-f4f4-8dbb776da068")]
public class DkmCustomInstructionSymbol : Microsoft.VisualStudio.Debugger.Symbols.DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("c154cde9-82a7-6e6f-f4f4-8dbb776da068")>]
type DkmCustomInstructionSymbol = class
    inherit DkmInstructionSymbol
Public Class DkmCustomInstructionSymbol
Inherits DkmInstructionSymbol
继承
DkmCustomInstructionSymbol
属性

属性

AdditionalData

[可选]与地址关联的其他特定于运行时的数据。 比较地址时,不会使用此数据。

EntityId

[可选]这是特定于运行时的数据结构,自定义运行时可以使用该结构来存储此指令的位置。 与“offset”一起,此字段将用于比较同一模块中的两条指令。

Module

DkmModule 类表示代码捆绑包 (ex: dll 或 exe) ,该代码捆绑包是或一次加载到一个或多个进程中。 DkmModule 类是符号 API 的中心对象,使用符号处理程序的加载内容表示法为 1:1。 如果代码捆绑加载到三个不同的进程 (或相同的进程,但具有三个不同的基址或三个不同的应用域) 但符号处理程序认为所有这些相同,则只有一个模块对象。

(继承自 DkmInstructionSymbol)
Offset

与“EntityId”一起,“Offset”字段用于唯一标识指令。 这可以保存指针值 (,例如指向指令) 的指针或函数/模块开头的偏移量。

RuntimeType

运行时 ID 标识特定代码段的执行环境。 调度程序使用运行时 ID 来决定要调度到哪个监视器。 请注意,运行时 ID Guid 的排序有些重要,因为它决定了哪个运行时在仲裁期间获得第一个快照。 因此,如果想要声明基于 CLR 构建的新运行时实例,运行时 ID 应小于 DkmRuntimeId.Clr。

(继承自 DkmInstructionSymbol)
TagValue

DkmInstructionSymbol 是抽象基类。 此枚举指示此对象是哪个派生类的实例。

(继承自 DkmInstructionSymbol)

方法

Bind(DkmModuleInstance)

将指令符号绑定到特定模块实例。 指令符号连接到 DkmModule 而不是 DkmModuleInstance,因此它不会绑定到特定进程、应用域或模块基址。

(继承自 DkmInstructionSymbol)
Create(DkmModule, Guid, ReadOnlyCollection<Byte>, UInt64, ReadOnlyCollection<Byte>)

Create新的 DkmCustomInstructionSymbol 对象实例。

GetAlternateSourcePosition(DkmSourcePositionFlags)

返回此指令符号 (example.cs,第 12 行) 的备用源文件位置。 这目前在源映射方案中用于返回原始 (未映射) 源位置。 如果找不到主源位置,调试器 UI 将调用此 API。

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

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

(继承自 DkmInstructionSymbol)
GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>)

异步计算给定 DkmInstructionSymbol 的基本符号信息。

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

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

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

(继承自 DkmInstructionSymbol)
GetCompilerId(DkmInspectionSession)

返回给定符号 (LanguageId/VendorId) 编译器 ID。

对于 Microsoft PDB 读取器,如果 PDB 是由使用 ISymUnmanagedWriter 的编译器创建的,则 PDB 读取器将能够从从 ISymUnmanagedWriter.DefineDocument 传递的 LanguageId/VendorId 对中确定正确的 DkmCompilerId。

如果 PDB 是由不使用 ISymUnmanagedWriter 的编译器创建的,则 PDB 读取器可能能够从S_COMPILE* PDB 记录获取 DkmCompilerId。 若要使此功能正常工作,编译器必须首先为每个编译者发出S_COMPILE*记录。 编译器需要确保正确填写语言枚举值和编译器字符串。 编译器应确保编译器字符串具有足够的特定性,可用于选择表达式计算器;建议包含公司名称。 发出枚举/名称对后,表达式计算器的设置应向调试器注册此对。 为此,表达式计算器应设置此注册表项:%VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% 并定义 VendorId/LanguageId。

(继承自 DkmInstructionSymbol)
GetCompilerId(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetCompilerIdAsyncResult>)

返回给定符号 (LanguageId/VendorId) 编译器 ID。

对于 Microsoft PDB 读取器,如果 PDB 是由使用 ISymUnmanagedWriter 的编译器创建的,则 PDB 读取器将能够从从 ISymUnmanagedWriter.DefineDocument 传递的 LanguageId/VendorId 对中确定正确的 DkmCompilerId。

如果 PDB 是由不使用 ISymUnmanagedWriter 的编译器创建的,则 PDB 读取器可能能够从S_COMPILE* PDB 记录获取 DkmCompilerId。 若要使此功能正常工作,编译器必须首先为每个编译者发出S_COMPILE*记录。 编译器需要确保正确填写语言枚举值和编译器字符串。 编译器应确保编译器字符串具有足够的特定性,可用于选择表达式计算器;建议包含公司名称。 发出枚举/名称对后,表达式计算器的设置应向调试器注册此对。 为此,表达式计算器应设置此注册表项:%VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% 并定义 VendorId/LanguageId。

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

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

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

(继承自 DkmInstructionSymbol)
GetCurrentStatementRange()

此方法返回 IL 偏移范围,该范围包含指令地址中指定的当前 IL 偏移量。

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

(继承自 DkmInstructionSymbol)
GetDisassemblyLabel(DkmInspectionSession)

返回应显示在反汇编窗口中的符号的名称。 对于 Microsoft C++ 代码,这基于公共符号名称。

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

(继承自 DkmInstructionSymbol)
GetEmbeddedDocument()

返回包含此符号的嵌入文档。 如果嵌入的文档不存在,则返回S_FALSE。

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

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

(继承自 DkmInstructionSymbol)
GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

此方法将地址信息返回到 GPU 调试监视器。

(继承自 DkmInstructionSymbol)
GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags)

返回给定指令符号处的内联帧数。

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

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

(继承自 DkmInstructionSymbol)
GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>)

返回给定指令符号处的内联帧数。

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

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

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

(继承自 DkmInstructionSymbol)
GetInlineSourcePosition(DkmStackWalkFrame, Boolean)

返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 指定内联帧号处。 如果此指令符号未与源文件关联,则本机) 中返回代码 (S_FALSE 返回 null。

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

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

(继承自 DkmInstructionSymbol)
GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>)

返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 指定内联帧号处。 如果此指令符号未与源文件关联,则本机) 中返回代码 (S_FALSE 返回 null。

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

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

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

(继承自 DkmInstructionSymbol)
GetNoSourceRanges()

查询符号提供程序以确定指令范围,这些指令不对应于任何用户源语句,并且由基本调试监视器用于在单步执行期间始终单步执行。

(继承自 DkmInstructionSymbol)
GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 。 如果此指令符号未与源文件关联,则本机) 中返回代码 (S_FALSE 返回 null。

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

(继承自 DkmInstructionSymbol)
GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>)

返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 。 如果此指令符号未与源文件关联,则本机) 中返回代码 (S_FALSE 返回 null。

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

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

(继承自 DkmInstructionSymbol)
GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 。 如果此指令符号未与源文件关联,则本机) 中返回代码 (S_FALSE 返回 null。

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

(继承自 DkmInstructionSymbol)
GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>)

返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 。 如果此指令符号未与源文件关联,则本机) 中返回代码 (S_FALSE 返回 null。

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

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

(继承自 DkmInstructionSymbol)
GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

查询符号提供程序以确定基本调试监视器为实现步骤而应单步执行的说明范围。

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

(继承自 DkmInstructionSymbol)
GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>)

查询符号提供程序以确定基本调试监视器为实现步骤而应单步执行的说明范围。

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

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

(继承自 DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmInspectionSession)

返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号未与源文件关联或不在用户代码中,则返回 null (E_INSTRUCTION_NO_SOURCE 返回代码) 。

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

(继承自 DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号未与源文件关联或不在用户代码中,则返回 null (E_INSTRUCTION_NO_SOURCE 返回代码) 。

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

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

(继承自 DkmInstructionSymbol)
HasEmbeddedDocument()

测试给定符号是否具有嵌入文档。 嵌入文档是当源文件 (示例:main.cs) 嵌入符号文件 (示例:example.pdb) 。

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

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

(继承自 DkmInstructionSymbol)
HasLineInfo()

查询符号提供程序以确定我们是否有行信息。 由调试监视器用于确定是否可将位置视为用户代码。

位置约束:对于普通符号,可以从任何组件调用。 对于动态符号, 只能在服务器端调用。

(继承自 DkmInstructionSymbol)
HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

查询符号提供程序以确定我们是否有行信息。 由调试监视器用于确定是否可将位置视为用户代码。

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

位置约束:对于普通符号,可以从任何组件调用。 对于动态符号, 只能在服务器端调用。

(继承自 DkmInstructionSymbol)
IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>)

如果此指令符号位于隐藏的代码中,则返回 。 例如,在托管代码中,行号0xfeefee将源行标记为隐藏。

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

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

(继承自 DkmInstructionSymbol)

适用于