使用指定的 Microsoft 中间语言 (MSIL) 映射项为指定的函数设置代码映射。
![]() |
---|
在 .NET Framework 2.0 版中,对在特定应用程序域中表示泛型函数的 FunctionID 调用 SetILInstrumentedCodeMap 将影响该应用程序域中该函数的所有实例。 |
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);
参数
functionId
[in] 要为其设置代码映射的函数的 ID。fStartJit
[in] 一个布尔值,指示对 SetILInstrumentedCodeMap 方法的调用是否为对特定 FunctionID 的第一次调用。 在为给定的 FunctionID 第一次调用 SetILInstrumentedCodeMap 时将 fStartJit 设置为 true,对于以后的调用则设置为 false。cILMapEntries
[in] cILMapEntries 数组中的元素数。rgILMapEntries
[in] 一个由 COR_IL_MAP 结构构成的数组,其中每个结构均指定 MSIL 偏移量。
备注
探查器通常在方法的源代码中插入语句以便检测该方法(例如,为了在到达给定的源行时发出通知)。 SetILInstrumentedCodeMap 允许探查器将原始的 MSIL 指令映射到其新位置。 探查器可以使用 ICorProfilerInfo::GetILToNativeMapping 方法获取给定本机偏移量的原始 MSIL 偏移量。
调试器将假定每个旧偏移量是指原始的、未修改的 MSIL 代码中的 MSIL 偏移量,每个新偏移量是指新的已检测代码中的 MSIL 偏移量。 映射应按升序排序。 为了使单步执行正常进行,请遵循下列准则:
不要对已检测的 MSIL 代码重新排序。
不要移除原始的 MSIL 代码。
在映射中包括与程序数据库 (PDB) 文件中的所有顺序点对应的项。 映射不插入缺少的项。 因此,如果给定以下映射:
(0 old, 0 new)
(5 old, 10 new)
(9 old, 20 new)
旧偏移量 0、1、2、3 或 4 将映射到新偏移量 0。
旧偏移量 5、6、7 或 8 将映射到新偏移量 10。
9 或更大的旧偏移量将映射到新偏移量 20。
新偏移量 0、1、2、3、4、5、6、7、8 或 9 将映射到旧偏移量 0。
新偏移量 10、11、12、13、14、15、16、17、18 或 19 将映射到旧偏移量 5。
20 或更大的新偏移量将映射到旧偏移量 9。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**CorProf.idl、CorProf.h
**库:**CorGuids.lib
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1