ICorProfilerInfo::SetILInstrumentedCodeMap-metod
Anger en kodkarta för den angivna funktionen med hjälp av de angivna mappningsposterna för det gemensamma mellanliggande språket (CIL).
Kommentar
I .NET Framework version 2.0 påverkar anrop SetILInstrumentedCodeMap
på en FunctionID
som representerar en allmän funktion i en viss programdomän alla instanser av funktionen i programdomänen.
Syntax
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);
Parametrar
functionId
[i] ID:t för den funktion som kodkartan ska ställas in för.
fStartJit
[i] Ett booleskt värde som anger om anropet SetILInstrumentedCodeMap
till metoden är det första för en viss FunctionID
. Ange fStartJit
till true
i det första anropet till SetILInstrumentedCodeMap
för en viss FunctionID
, och till false
därefter.
cILMapEntries
[i] Antalet element i matrisen cILMapEntries
.
rgILMapEntries
[i] En matris med COR_IL_MAP strukturer, som var och en anger en CIL-förskjutning.
Kommentarer
En profilerare infogar ofta instruktioner i källkoden för en metod för att instrumentera metoden (till exempel för att meddela när en viss källrad nås). SetILInstrumentedCodeMap
gör det möjligt för en profilerare att mappa de ursprungliga CIL-instruktionerna till sina nya platser. En profilerare kan använda metoden ICorProfilerInfo::GetILToNativeMapping för att hämta den ursprungliga CIL-förskjutningen för en given intern förskjutning.
Felsökningsprogrammet förutsätter att varje gammal förskjutning refererar till en CIL-förskjutning inom den ursprungliga, oförändrade CIL-koden och att varje ny förskjutning refererar till CIL-förskjutningen i den nya instrumenterade koden. Kartan bör sorteras i ökande ordning. Följ dessa riktlinjer för att stega för att fungera korrekt:
Ändra inte ordning på instrumenterad CIL-kod.
Ta inte bort den ursprungliga CIL-koden.
Inkludera poster för alla sekvenspunkter från programdatabasfilen (PDB) på kartan. Kartan interpolerar inte saknade poster. Så, med tanke på följande karta:
(0 gamla, 0 nya)
(5 gamla, 10 nya)
(9 gamla, 20 nya)
En gammal förskjutning på 0, 1, 2, 3 eller 4 mappas till ny förskjutning 0.
En gammal förskjutning på 5, 6, 7 eller 8 mappas till ny förskjutning 10.
En gammal förskjutning på 9 eller högre mappas till ny förskjutning 20.
En ny förskjutning på 0, 1, 2, 3, 4, 5, 6, 7, 8 eller 9 mappas till gammal förskjutning 0.
En ny förskjutning på 10, 11, 12, 13, 14, 15, 16, 17, 18 eller 19 mappas till gammal förskjutning 5.
En ny förskjutning på 20 eller högre mappas till gammal förskjutning 9.
I .NET Framework 3.5 och tidigare versioner allokerar du matrisen rgILMapEntries
genom att anropa metoden CoTaskMemAlloc . Eftersom körningen tar över ägarskapet för det här minnet bör profileraren inte försöka frigöra det.
Krav
Plattformar: Se Systemkrav.
Rubrik: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework-versioner: Tillgänglig sedan 1.1