DkmNativeInstructionSymbol 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
DkmNativeInstructionSymbol 表示目标进程的模块中的本机指令。 DkmNativeInstructionSymbol 使用基础本机指令为 1:1。 因此,如果方法 (有两个模板实例化:MyMethod<CString> 和 MyMethod<int>) 如果链接器通过 COMDAT 折叠将两个实例化合并到单个函数中,则方法将相同。 如果链接器无法合并这两个实例化,则两个用户级函数将显示为一个 DkmNativeInstructionSymbol。
public ref class DkmNativeInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmNativeInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
class DkmNativeInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[System.Runtime.InteropServices.Guid("0eb834ca-c591-449c-66ad-e016093977d2")]
public class DkmNativeInstructionSymbol : Microsoft.VisualStudio.Debugger.Symbols.DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("0eb834ca-c591-449c-66ad-e016093977d2")>]
type DkmNativeInstructionSymbol = class
inherit DkmInstructionSymbol
Public Class DkmNativeInstructionSymbol
Inherits DkmInstructionSymbol
- 继承
- 属性
属性
Module |
DkmModule 类表示代码包 (例如 dll 或 exe) ,该代码包或一次加载到一个或多个进程中。 DkmModule 类是符号 API 的中心对象,是 1:1,具有符号处理程序对加载的内容的表示法。 如果代码捆绑加载到三个不同的进程 (或同一个进程,但具有三个不同的基址或三个不同的应用域) 但符号处理程序认为所有这些进程都是相同的,则只有一个模块对象。 (继承自 DkmInstructionSymbol) |
RuntimeType |
运行时 ID 标识特定代码段的执行环境。 调度程序使用运行时 ID 来决定要调度到哪个监视器。 请注意,运行时 ID Guid 的排序有点重要,因为它决定了哪个运行时在仲裁期间获得第一次拍摄。 因此,如果想要声明基于 CLR 构建的新运行时实例,运行时 ID 应小于 DkmRuntimeId.Clr。 (继承自 DkmInstructionSymbol) |
RVA |
Module 中 InstructionPointer 的 RVA。 |
TagValue |
DkmInstructionSymbol 是一个抽象基类。 此枚举指示此对象是哪个派生类的实例。 (继承自 DkmInstructionSymbol) |
方法
Bind(DkmModuleInstance) |
将指令符号绑定到特定模块实例。 指令符号连接到 DkmModule 而不是 DkmModuleInstance,因此它不会绑定到特定进程、应用域或模块基址。 (继承自 DkmInstructionSymbol) |
Create(DkmModule, UInt32) |
Create新的 DkmNativeInstructionSymbol 对象实例。 |
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* 记录。 编译器需要确保正确填写语言枚举值和编译器字符串。 编译器应确保编译器字符串足够具体,可用于选择表达式计算器;建议包含公司名称。 发出 Enum/Name 对后,表达式计算器的设置应向调试器注册此对。 为此,表达式计算器应设置此注册表项:%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* 记录。 编译器需要确保正确填写语言枚举值和编译器字符串。 编译器应确保编译器字符串足够具体,可用于选择表达式计算器;建议包含公司名称。 发出 Enum/Name 对后,表达式计算器的设置应向调试器注册此对。 为此,表达式计算器应设置此注册表项:%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) |
GetNativeInstructionMetadataCallback(DkmInstructionAddress) |
将地址信息返回到本机调试监视器。 |
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) |
GetSteppingNativeInstructionMetadata(DkmModuleInstance, DkmInstructionAddress) |
由本机 DM 调用,以提取有关指令的数据,该指令用于决定如何执行此指令。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。 |
GetSteppingRanges(DkmModuleInstance, DkmInstructionAddress, DkmSteppingRangeBoundary, Boolean) |
查询符号提供程序,以确定基本调试监视器应逐步执行以执行步骤的指令范围。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。 |
GetSteppingRanges(DkmSteppingRangeBoundary, Boolean) |
查询符号提供程序以确定基本调试监视器为实现步骤而应单步执行的说明范围。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmInstructionSymbol) |
GetSteppingRanges(DkmWorkList, DkmModuleInstance, DkmInstructionAddress, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>) |
查询符号提供程序,以确定基本调试监视器应逐步执行以执行步骤的指令范围。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。 |
GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>) |
查询符号提供程序以确定基本调试监视器为实现步骤而应单步执行的说明范围。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmInstructionSymbol) |
GetUserCodeSourcePositionCallback(DkmInspectionSession) |
返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 。 如果此指令符号未与源文件关联或不在用户代码中,则返回 (E_INSTRUCTION_NO_SOURCE 返回代码) 返回 null。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmInstructionSymbol) |
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>) |
返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 。 如果此指令符号未与源文件关联或不在用户代码中,则返回 (E_INSTRUCTION_NO_SOURCE 返回代码) 返回 null。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmInstructionSymbol) |
HasEmbeddedDocument() |
测试给定符号是否具有嵌入文档。 嵌入文档是当源文件 (示例:main.cs) 嵌入符号文件 (示例.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) |