共用方式為


ICorProfilerInfo::SetILInstrumentedCodeMap 方法

使用指定的 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、CorProf.h

**程式庫:**CorGuids.lib

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1

請參閱

參考

ICorProfilerInfo 介面