ICorProfilerInfo::SetILInstrumentedCodeMap 方法

使用指定的通用中繼語言 (CIL) 對應專案,為指定的函式設定程式代碼對應。

注意

在 .NET Framework 2.0 版中,呼叫 SetILInstrumentedCodeMap 代表 FunctionID 特定應用程式域中泛型函式的 ,會影響應用程式域中該函式的所有實例。

語法

HRESULT SetILInstrumentedCodeMap(
    [in]  FunctionID functionId,
    [in]  BOOL       fStartJit,
    [in]  ULONG      cILMapEntries,
    [in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);

參數

functionId
[in]要為其設定程式代碼對應之函式的標識碼。

fStartJit
[in]布林值,指出對 方法的 SetILInstrumentedCodeMap 呼叫是否為特定 FunctionID的第一個 。 在指定 FunctionID的第一次呼叫 SetILInstrumentedCodeMap 中,將 設定fStartJit為 ,然後設定為 falsetrue

cILMapEntries
[in] cILMapEntries 陣列中的項目數。

rgILMapEntries
[in]COR_IL_MAP 結構的陣列,每個結構都會指定 CIL 位移。

備註

分析工具通常會在方法的原始程式碼中插入 語句,以檢測該方法(例如,在到達指定的來源行時通知)。 SetILInstrumentedCodeMap 可讓分析工具將原始 CIL 指示對應至其新位置。 分析工具可以使用 ICorProfilerInfo::GetILToNativeMapping 方法來取得指定原生位移的原始 CIL 位移。

調試程式會假設每個舊的位移都是指原始、未修改 CIL 程式代碼內的 CIL 位移,而且每個新位移都參考新檢測程式代碼內的 CIL 位移。 地圖應依遞增順序排序。 若要讓逐步執行正常運作,請遵循下列指導方針:

  • 請勿重新排序已檢測的 CIL 程式代碼。

  • 請勿移除原始 CIL 程式代碼。

  • 在對應中包含來自程式資料庫 (PDB) 檔案之所有序列點的專案。 對應不會插入遺漏的專案。 因此,假設有下列地圖:

    (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 3.5 和舊版中,您可以呼叫 CoTaskMemAlloc 方法來配置rgILMapEntries數位。 因為運行時間會取得此記憶體的擁有權,所以分析工具不應該嘗試釋放它。

需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework 版本: 自 1.1 起提供

另請參閱