DkmInstructionSymbol 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
DkmInstructionSymbol 表示目标进程中的方法。
派生类:DkmClrInstructionSymbol、DkmClrNcInstructionSymbol、DkmCustomInstructionSymbol、DkmNativeInstructionSymbol、DkmScriptInstructionSymbol
public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
class DkmInstructionSymbol abstract
[System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")]
public abstract class DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")>]
type DkmInstructionSymbol = class
Public MustInherit Class DkmInstructionSymbol
- 继承
-
DkmInstructionSymbol
- 派生
- 属性
属性
Module |
DkmModule 类表示代码捆绑包 (ex: dll 或 exe) ,该代码捆绑包是或一次加载到一个或多个进程中。 DkmModule 类是符号 API 的中心对象,使用符号处理程序的加载内容表示法为 1:1。 如果代码捆绑加载到三个不同的进程 (或相同的进程,但具有三个不同的基址或三个不同的应用域) 但符号处理程序认为所有这些相同,则只有一个模块对象。 |
RuntimeType |
运行时 ID 标识特定代码段的执行环境。 调度程序使用运行时 ID 来决定要调度到哪个监视器。 请注意,运行时 ID Guid 的排序有些重要,因为它决定了哪个运行时在仲裁期间获得第一个快照。 因此,如果想要声明基于 CLR 构建的新运行时实例,运行时 ID 应小于 DkmRuntimeId.Clr。 |
TagValue |
DkmInstructionSymbol 是抽象基类。 此枚举指示此对象是哪个派生类的实例。 |
方法
Bind(DkmModuleInstance) |
将指令符号绑定到特定模块实例。 指令符号连接到 DkmModule 而不是 DkmModuleInstance,因此它不会绑定到特定进程、应用域或模块基址。 |
GetAlternateSourcePosition(DkmSourcePositionFlags) |
返回备用源文件位置 (例如:example.cs,第 12 行) 此指令符号。 这当前在源映射方案中用于返回原始 (未映射) 源位置。 如果找不到主源位置,调试器 UI 将调用此 API。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 中引入的。 |
GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>) |
异步计算给定 DkmInstructionSymbol 的基本符号信息。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引入的。 |
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。 |
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) 中引入的。 |
GetCurrentStatementRange() |
此方法返回包含指令地址中指定的当前 IL 偏移量的 IL 偏移量范围。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
GetDisassemblyLabel(DkmInspectionSession) |
返回应显示在反汇编窗口中的符号的名称。 对于 Microsoft C++ 代码,这基于公共符号名称。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 |
GetEmbeddedDocument() |
返回包含此符号的嵌入文档。 如果嵌入的文档不存在,则返回S_FALSE。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 中引入的。 |
GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol) |
此方法将地址信息返回到 GPU 调试监视器。 |
GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags) |
返回给定指令符号处的内联帧数。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引入的。 |
GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>) |
返回给定指令符号处的内联帧数。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引入的。 |
GetInlineSourcePosition(DkmStackWalkFrame, Boolean) |
返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 位于指定的内联帧编号处。 如果此指令符号与源文件不关联,则本机) 中的返回代码 (S_FALSE 返回 null。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 15 RTM (DkmApiVersion.VS15RTM) 中引入的。 |
GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>) |
返回源文件位置 (例如:example.cs,此指令符号的第 12 行) 位于指定的内联帧编号处。 如果此指令符号与源文件不关联,则本机) 中的返回代码 (S_FALSE 返回 null。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 15 RTM (DkmApiVersion.VS15RTM) 中引入的。 |
GetNoSourceRanges() |
查询符号提供程序以确定指令的范围,这些指令不对应于任何用户源语句,并且由基本调试监视器使用,以在单步执行过程中始终单步执行。 |
GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean) |
返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号与源文件不关联,则本机) 中的返回代码 (S_FALSE 返回 null。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 |
GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>) |
返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号与源文件不关联,则本机) 中的返回代码 (S_FALSE 返回 null。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 |
GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean) |
返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号与源文件不关联,则本机) 中的返回代码 (S_FALSE 返回 null。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>) |
返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号与源文件不关联,则本机) 中的返回代码 (S_FALSE 返回 null。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
GetSteppingRanges(DkmSteppingRangeBoundary, Boolean) |
查询符号提供程序,以确定基本调试监视器应逐步执行以执行步骤的指令范围。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>) |
查询符号提供程序,以确定基本调试监视器应逐步执行以执行步骤的指令范围。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
GetUserCodeSourcePositionCallback(DkmInspectionSession) |
返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号未与源文件关联或不在用户代码中,则返回 null (E_INSTRUCTION_NO_SOURCE 返回代码) 。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>) |
返回源文件位置 (例如:example.cs,第 12 行) 此指令符号。 如果此指令符号未与源文件关联或不在用户代码中,则返回 null (E_INSTRUCTION_NO_SOURCE 返回代码) 。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 |
HasEmbeddedDocument() |
测试给定符号是否具有嵌入文档。 嵌入文档是当源文件 (示例:main.cs) 嵌入符号文件 (示例:example.pdb) 。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 中引入的。 |
HasLineInfo() |
查询符号提供程序以确定我们是否有行信息。 由调试监视器用于确定是否可将位置视为用户代码。 位置约束:对于普通符号,可以从任何组件调用。 对于动态符号, 只能在服务器端调用。 |
HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>) |
查询符号提供程序以确定我们是否有行信息。 由调试监视器用于确定是否可将位置视为用户代码。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:对于普通符号,可以从任何组件调用。 对于动态符号, 只能在服务器端调用。 |
IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>) |
如果此指令符号位于隐藏的代码中,则返回 。 例如,在托管代码中,行号0xfeefee将源行标记为隐藏。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 |