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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk