ICorProfilerInfo::SetILInstrumentedCodeMap 方法
更新:2007 年 11 月
使用指定的 Microsoft Intermediate Language (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) 檔案中所有序列點的項目包含在對應中。此對應不會插補 (Interpolate) 遺漏的項目。因此,根據下列對應:
(0 舊、0 新)
(5 舊、10 新)
(9 舊、20 新)
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
**程式庫:**CorGuids.lib
**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1