Udostępnij za pośrednictwem


ICorProfilerInfo::SetILInstrumentedCodeMap — Metoda

Ustawia mapę kodu dla określonej funkcji przy użyciu określonych wpisów mapy języka pośredniego (CIL).

Uwaga

W programie .NET Framework w wersji 2.0 wywołanie elementu SetILInstrumentedCodeMapFunctionID reprezentującego funkcję ogólną w określonej domenie aplikacji będzie miało wpływ na wszystkie wystąpienia tej funkcji w domenie aplikacji.

Składnia

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

Parametry

functionId
[in] Identyfikator funkcji, dla której ma być ustawiona mapa kodu.

fStartJit
[in] Wartość logiczna wskazująca, czy wywołanie SetILInstrumentedCodeMap metody jest pierwszym elementem dla określonego FunctionIDelementu . Ustaw fStartJit wartość na true w pierwszym wywołaniu SetILInstrumentedCodeMap dla danego FunctionIDelementu , a następnie na false wartość .

cILMapEntries
[in] Liczba elementów w tablicy cILMapEntries .

rgILMapEntries
[in] Tablica struktur COR_IL_MAP, z których każdy określa przesunięcie CIL.

Uwagi

Profiler często wstawia instrukcje w kodzie źródłowym metody w celu instrumentowania tej metody (na przykład powiadamiania o osiągnięciu danego wiersza źródłowego). SetILInstrumentedCodeMap umożliwia profilerowi mapowania oryginalnych instrukcji CIL na ich nowe lokalizacje. Profiler może użyć metody ICorProfilerInfo::GetILToNativeMapping , aby uzyskać oryginalne przesunięcie CIL dla danego przesunięcia natywnego.

Debuger przyjmie, że każde stare przesunięcie odnosi się do przesunięcia CIL w oryginalnym, niezmodyfikowanym kodzie CIL i że każde nowe przesunięcie odnosi się do przesunięcia CIL w nowym, instrumentowanym kodzie. Mapa powinna być sortowana w kolejności rosnącej. Aby uzyskać instrukcje dotyczące prawidłowego działania, postępuj zgodnie z następującymi wytycznymi:

  • Nie zmieniaj kolejności instrumentowanego kodu CIL.

  • Nie usuwaj oryginalnego kodu CIL.

  • Uwzględnij wpisy dla wszystkich punktów sekwencji z pliku bazy danych programu (PDB) na mapie. Mapa nie interpoluje brakujących wpisów. Tak więc, biorąc pod uwagę następującą mapę:

    (0 stary, 0 nowy)

    (5 starych, 10 nowych)

    (9 starych, 20 nowych)

    • Stare przesunięcie 0, 1, 2, 3 lub 4 zostanie zamapowane na nowe przesunięcie 0.

    • Stare przesunięcie 5, 6, 7 lub 8 zostanie zamapowane na nowe przesunięcie 10.

    • Stare przesunięcie 9 lub wyższe zostanie zamapowane na nowe przesunięcie 20.

    • Nowe przesunięcie 0, 1, 2, 3, 4, 5, 6, 7, 8 lub 9 zostanie zamapowane na stare przesunięcie 0.

    • Nowe przesunięcie 10, 11, 12, 13, 14, 15, 16, 17, 18 lub 19 zostanie zamapowane na stare przesunięcie 5.

    • Nowe przesunięcie 20 lub wyższe zostanie zamapowane na stare przesunięcie 9.

W programie .NET Framework 3.5 i poprzednich wersjach należy przydzielić tablicę rgILMapEntries , wywołując metodę CoTaskMemAlloc . Ponieważ środowisko uruchomieniowe przejmuje własność tej pamięci, profiler nie powinien próbować go zwolnić.

Wymagania

Platformy: zobacz Wymagania systemowe.

Nagłówek: CorProf.idl, CorProf.h

Biblioteka: CorGuids.lib

Wersje programu .NET Framework: dostępne od wersji 1.1

Zobacz też