Dela via


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

Se även