ICorProfilerInfo::SetILInstrumentedCodeMap – metoda
Nastaví mapování kódu pro zadanou funkci pomocí zadaných položek mapování společného zprostředkujícího jazyka (CIL).
Poznámka:
V rozhraní .NET Framework verze 2.0 bude volání SetILInstrumentedCodeMap
, FunctionID
které představuje obecnou funkci v konkrétní doméně aplikace, ovlivnit všechny instance této funkce v doméně aplikace.
Syntaxe
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);
Parametry
functionId
[v] ID funkce, pro kterou chcete nastavit mapování kódu.
fStartJit
[v] Logická hodnota, která označuje, zda volání SetILInstrumentedCodeMap
metody je první pro konkrétní FunctionID
. Nastavte fStartJit
v prvním volání SetILInstrumentedCodeMap
pro danou FunctionID
hodnotu a dálefalse
.true
cILMapEntries
[v] Počet prvků v cILMapEntries
poli.
rgILMapEntries
[v] Pole COR_IL_MAP struktur, z nichž každá určuje posun CIL.
Poznámky
Profiler často vkládá příkazy do zdrojového kódu metody k instrumentaci této metody (například k upozornění při dosažení daného řádku zdroje). SetILInstrumentedCodeMap
umožňuje profileru namapovat původní pokyny CIL na nová umístění. Profiler může použít ICorProfilerInfo::GetILToNativeMapping metoda získat původní posun CIL pro daný nativní posun.
Ladicí program předpokládá, že každý starý posun odkazuje na posun CIL v rámci původního, nezměněného kódu CIL a že každý nový posun odkazuje na posun CIL v rámci nového instrumentovaného kódu. Mapa by měla být seřazena vzestupně. Aby krokování fungovalo správně, postupujte podle těchto pokynů:
Nepřeuspořádejte instrumentovaný kód CIL.
Neodebídejte původní kód CIL.
Zahrňte položky pro všechny body sekvence ze souboru PDB (Program Database) v mapě. Mapa ne interpoluje chybějící položky. S ohledem na následující mapu:
(0 staré, 0 nové)
(5 starých, 10 nových)
(9 starých, 20 nových)
Starý posun 0, 1, 2, 3 nebo 4 se mapuje na nový posun 0.
Starý posun 5, 6, 7 nebo 8 bude mapován na nový posun 10.
Starý posun 9 nebo vyšší bude mapován na nový posun 20.
Nový posun 0, 1, 2, 3, 4, 5, 6, 7, 8 nebo 9 bude mapován na starý posun 0.
Nový posun 10, 11, 12, 13, 14, 15, 16, 17, 18 nebo 19 se mapuje na starý posun 5.
Nový posun o hodnotě 20 nebo vyšší bude mapován na starý posun 9.
V rozhraní .NET Framework 3.5 a předchozích verzích přidělíte rgILMapEntries
pole voláním metody CoTaskMemAlloc . Vzhledem k tomu, že modul runtime převezme vlastnictví této paměti, profiler by se neměl pokoušet uvolnit tuto paměť.
Požadavky
Platformy: Viz požadavky na systém.
Hlavička: CorProf.idl, CorProf.h
Knihovna: CorGuids.lib
Verze rozhraní .NET Framework: Dostupné od verze 1.1