Sdílet prostřednictvím


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 FunctionIDhodnotu 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

Viz také