DkmClrInstructionSymbol 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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
- 继承
- 派生
- 属性
属性
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) |