Bagikan melalui


Metode ICorProfilerInfo::SetILInstrumentedCodeMap

Mengatur peta kode untuk fungsi yang ditentukan menggunakan entri peta bahasa perantara umum (CIL) yang ditentukan.

Catatan

Dalam .NET Framework versi 2.0, panggilan SetILInstrumentedCodeMap pada FunctionID yang mewakili fungsi generik dalam domain aplikasi tertentu akan memengaruhi semua instans fungsi tersebut di domain aplikasi.

Sintaks

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

Parameter

functionId
[di] ID fungsi untuk mengatur peta kode.

fStartJit
[di] Nilai Boolean yang menunjukkan apakah panggilan ke SetILInstrumentedCodeMap metode adalah yang pertama untuk tertentu FunctionID. Setel fStartJit ke true dalam panggilan pertama ke SetILInstrumentedCodeMap untuk FunctionID tertentu, dan ke false setelahnya.

cILMapEntries
[di] Jumlah elemen dalam cILMapEntries array.

rgILMapEntries
[di] Array struktur COR_IL_MAP, yang masing-masing menentukan offset CIL.

Keterangan

Profiler sering menyisipkan pernyataan di dalam kode sumber suatu metode untuk melengkapi metode tersebut (misalnya, untuk memberi tahu ketika baris sumber tertentu tercapai). SetILInstrumentedCodeMap memungkinkan profiler untuk memetakan instruksi CIL asli ke lokasi baru mereka. Profiler dapat menggunakan metode ICorProfilerInfo::GetILToNativeMapping untuk mendapatkan offset CIL asli untuk offset asli tertentu.

Debugger akan mengasumsikan bahwa setiap offset lama mengacu pada offset CIL dalam kode CIL asli yang tidak dimodifikasi, dan bahwa setiap offset baru mengacu pada offset CIL dalam kode berinstrumen baru. Peta harus diurutkan dalam urutan yang menaik. Agar langkah berfungsi dengan baik, ikuti panduan berikut:

  • Jangan menyusun ulang kode CIL berinstrumentasi.

  • Jangan hapus kode CIL asli.

  • Sertakan entri untuk semua titik urutan dari file database program (PDB) di peta. Peta tidak menginterpolasi entri yang hilang. Jadi, mengingat peta berikut:

    (0 lama, 0 baru)

    (5 lama, 10 baru)

    (9 lama, 20 baru)

    • Offset lama 0, 1, 2, 3, atau 4 akan dipetakan ke offset baru 0.

    • Offset lama 5, 6, 7, atau 8 akan dipetakan ke offset baru 10.

    • Offset lama 9 atau lebih tinggi akan dipetakan ke offset baru 20.

    • Offset baru 0, 1, 2, 3, 4, 5, 6, 7, 8, atau 9 akan dipetakan ke offset lama 0.

    • Offset baru 10, 11, 12, 13, 14, 15, 16, 17, 18, atau 19 akan dipetakan ke offset lama 5.

    • Offset baru 20 atau lebih tinggi akan dipetakan ke offset lama 9.

Dalam .NET Framework 3.5 dan versi sebelumnya, Anda mengalokasikan array rgILMapEntries dengan memanggil metode CoTaskMemAlloc. Karena runtime mengambil kepemilikan memori ini, profiler tidak boleh mencoba membebaskannya.

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: CorProf.idl, CorProf.h

Pustaka: CorGuids.lib

Versi .NET Framework: Tersedia mulai dari 1.1

Lihat juga