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 FunctionID
en 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