DkmClrInstructionSymbol 类

定义

DkmClrInstructionSymbol 表示在目标进程中的公共语言运行时 (CLR) 下运行的 IL 指令。 此对象包含方法版本号。 因此,在 Edit-and-Continue 方案中,不同版本的方法的指令符号会有所不同。 此对象不包含有关泛型绑定参数的信息。 因此,方法的不同泛型实例化 (示例:MyMethod<string> 和 MyMethod<int>) 由同一指令符号表示,因为 CLR 使用单个方法标记表示它们。

派生类:DkmClrNcInstructionSymbol

public ref class DkmClrInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[System.Runtime.InteropServices.Guid("8e7388ae-e3e2-122c-5560-09f77dfaed9d")]
public class DkmClrInstructionSymbol : Microsoft.VisualStudio.Debugger.Symbols.DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("8e7388ae-e3e2-122c-5560-09f77dfaed9d")>]
type DkmClrInstructionSymbol = class
    inherit DkmInstructionSymbol
Public Class DkmClrInstructionSymbol
Inherits DkmInstructionSymbol
继承
DkmClrInstructionSymbol
派生
属性

属性

ILOffset

ILOffset 是此符号表示的 IL 指令的索引。 对于位于给定方法内但不绑定到特定指令的指令,此值可以设置为 UInt32.MaxValue。 这用于不映射到 IL 指令的 CLR 本机指令。

MethodId

此方法的版本/令牌对。

Module

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

(继承自 DkmInstructionSymbol)
RuntimeType

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

(继承自 DkmInstructionSymbol)
TagValue

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

(继承自 DkmInstructionSymbol)

方法

Bind(DkmModuleInstance)

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

(继承自 DkmInstructionSymbol)
Create(DkmModule, DkmClrMethodId, UInt32)

Create新的 DkmClrInstructionSymbol 对象实例。

GetAllAwaitExpressionInfoForStatement()

获取围绕给定指令符号的语句中包含的屈服点和恢复点。

GetAllAwaitExpressionInfoForStatement(DkmWorkList, DkmCompletionRoutine<DkmGetAllAwaitExpressionInfoForStatementAsyncResult>)

获取围绕给定指令符号的语句中包含的屈服点和恢复点。

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

GetAlternateSourcePosition(DkmSourcePositionFlags)

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

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

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

(继承自 DkmInstructionSymbol)
GetAsyncKickoffMethod()

如果当前方法是异步方法,则返回此异步方法的启动方法。

GetAsyncKickoffMethod(DkmWorkList, DkmCompletionRoutine<DkmGetAsyncKickoffMethodAsyncResult>)

如果当前方法是异步方法,则返回此异步方法的启动方法。

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

GetAsyncMethodCatchHandlerILOffset(UInt32)

获取异步方法生成的 catch 处理程序的可选起始 IL 偏移量。

GetAsyncMethodLocation()

获取指令符号在它的 方法中的位置。

GetAsyncMethodLocation(DkmWorkList, DkmCompletionRoutine<DkmGetAsyncMethodLocationAsyncResult>)

获取指令符号在它的 方法中的位置。

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

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)
GetManagedCppFunctionParameters(DkmProcess)

获取由给定函数符号表示的托管 C++ 函数的参数。

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

此 API 是在 Visual Studio 14 Update 1 (DkmApiVersion.VS14Update1) 中引入的。

GetManagedCppMethodScope(DkmNativeCppInspectionSession)

返回有关给定指令符号指示的位置最内层活动作用域的符号信息,假定该指令符号已使用托管 C++ 进行编译。

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

此 API 是在 Visual Studio 14 Update 1 (DkmApiVersion.VS14Update1) 中引入的。

GetMethodLocalSymbols()

返回方法中的范围。 始终至少有一个范围。

位置约束:从 IDE 组件调用以查询服务器端编译 ASP.NET 代码或动态编译代码的信息时,此 API 将失败。

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

GetMethodLocalSymbols(DkmWorkList, DkmCompletionRoutine<DkmGetMethodLocalSymbolsAsyncResult>)

返回方法中的范围。 始终至少有一个范围。

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

位置约束:从 IDE 组件调用以查询服务器端编译 ASP.NET 代码或动态编译代码的信息时,此 API 将失败。

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

GetMethodSymbolStoreAttribute(DkmWorkList, String, DkmCompletionRoutine<DkmGetMethodSymbolStoreAttributeAsyncResult>)

根据名称获取自定义属性。 不要与元数据自定义属性混淆,这些属性保存在符号存储中。

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

位置约束:从 IDE 组件调用以查询服务器端编译 ASP.NET 代码或动态编译代码的信息时,此 API 将失败。

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

GetMethodSymbolStoreAttribute(String)

根据名称获取自定义属性。 不要与元数据自定义属性混淆,这些属性保存在符号存储中。

位置约束:从 IDE 组件调用以查询服务器端编译 ASP.NET 代码或动态编译代码的信息时,此 API 将失败。

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

GetNextAwaitExpressionInfo()

获取下一个 await 表达式的 yield 和 resume 信息。

GetNextAwaitExpressionInfo(DkmWorkList, DkmCompletionRoutine<DkmGetNextAwaitExpressionInfoAsyncResult>)

获取下一个 await 表达式的 yield 和 resume 信息。

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

GetNoSourceRanges()

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

(继承自 DkmInstructionSymbol)
GetSequencePoints()

从符号文件中获取 CLR 方法的序列点。

位置约束:从 IDE 组件调用以查询服务器端编译 ASP.NET 代码或动态编译代码的信息时,此 API 将失败。

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

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)

适用于