Delen via


Methode ICorProfilerInfo::SetILInstrumentedCodeMap

Hiermee stelt u een codetoewijzing in voor de opgegeven functie met behulp van de opgegeven CIL-toewijzingsvermeldingen (Common Intermediate Language).

Notitie

In .NET Framework versie 2.0 is het aanroepen van SetILInstrumentedCodeMap een FunctionID functie die een algemene functie in een bepaald toepassingsdomein vertegenwoordigt, van invloed op alle exemplaren van die functie in het toepassingsdomein.

Syntaxis

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

Parameters

functionId
[in] De id van de functie waarvoor de codetoewijzing moet worden ingesteld.

fStartJit
[in] Een Booleaanse waarde die aangeeft of de aanroep naar de SetILInstrumentedCodeMap methode de eerste is voor een bepaalde FunctionID. Ingesteld fStartJit op true in de eerste aanroep voor SetILInstrumentedCodeMap een gegeven FunctionIDen false daarna.

cILMapEntries
[in] Het aantal elementen in de cILMapEntries matrix.

rgILMapEntries
[in] Een matrix van COR_IL_MAP structuren, die elk een CIL-offset specificeert.

Opmerkingen

Een profiler voegt vaak instructies in de broncode van een methode in om die methode te instrumenteren (bijvoorbeeld om te waarschuwen wanneer een bepaalde bronlijn wordt bereikt). SetILInstrumentedCodeMap hiermee kan een profiler de oorspronkelijke CIL-instructies toewijzen aan hun nieuwe locaties. Een profiler kan de methode ICorProfilerInfo::GetILToNativeMapping gebruiken om de oorspronkelijke CIL-offset op te halen voor een bepaalde systeemeigen offset.

In het foutopsporingsprogramma wordt ervan uitgegaan dat elke oude offset verwijst naar een CIL-offset binnen de oorspronkelijke, ongewijzigde CIL-code en dat elke nieuwe offset verwijst naar de CIL-offset in de nieuwe, geïnstrueerde code. De kaart moet in oplopende volgorde worden gesorteerd. Volg deze richtlijnen om de stappen goed te laten werken:

  • Rangschik de geïnstrueerde CIL-code niet opnieuw.

  • Verwijder de oorspronkelijke CIL-code niet.

  • Neem vermeldingen op voor alle reekspunten uit het PDB-bestand (program database) in de kaart. De kaart interpoleert ontbrekende vermeldingen niet. Dus op basis van de volgende kaart:

    (0 oud, 0 nieuw)

    (5 oud, 10 nieuw)

    (9 oud, 20 nieuw)

    • Een oude verschuiving van 0, 1, 2, 3 of 4 wordt toegewezen aan nieuwe offset 0.

    • Een oude offset van 5, 6, 7 of 8 wordt toegewezen aan nieuwe offset 10.

    • Een oude verschuiving van 9 of hoger wordt toegewezen aan nieuwe offset 20.

    • Een nieuwe offset van 0, 1, 2, 3, 4, 5, 6, 7, 8 of 9 wordt toegewezen aan oude offset 0.

    • Een nieuwe verschuiving van 10, 11, 12, 13, 14, 15, 16, 17, 18 of 19 wordt toegewezen aan oude offset 5.

    • Een nieuwe offset van 20 of hoger wordt toegewezen aan oude offset 9.

In de .NET Framework 3.5- en vorige versies wijst u de rgILMapEntries matrix toe door de methode CoTaskMemAlloc aan te roepen. Omdat de runtime eigenaar wordt van dit geheugen, mag de profiler deze niet vrij maken.

Vereisten

Platformen: Zie Systeemvereisten.

Koptekst: CorProf.idl, CorProf.h

Bibliotheek: CorGuids.lib

.NET Framework-versies: beschikbaar sinds 1.1

Zie ook