Metodo ICorProfilerInfo::SetILInstrumentedCodeMap
Imposta una mappa del codice per la funzione specificata utilizzando le voci di mapping CIL (Common Intermediate Language) specificate.
Nota
In .NET Framework versione 2.0, la chiamata SetILInstrumentedCodeMap
a un FunctionID
oggetto che rappresenta una funzione generica in un dominio applicazione specifico influirà su tutte le istanze di tale funzione nel dominio applicazione.
Sintassi
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);
Parametri
functionId
[in] ID della funzione per cui impostare la mappa del codice.
fStartJit
[in] Valore booleano che indica se la chiamata al SetILInstrumentedCodeMap
metodo è la prima per un particolare FunctionID
oggetto . Impostare fStartJit
su true
nella prima chiamata a SetILInstrumentedCodeMap
per un determinato FunctionID
oggetto e su false
successivamente.
cILMapEntries
[in] Numero di elementi nella matrice cILMapEntries
.
rgILMapEntries
[in] Matrice di strutture COR_IL_MAP, ognuna delle quali specifica un offset CIL.
Osservazioni:
Un profiler spesso inserisce istruzioni all'interno del codice sorgente di un metodo per instrumentare tale metodo , ad esempio per notificare quando viene raggiunta una determinata riga di origine. SetILInstrumentedCodeMap
consente a un profiler di eseguire il mapping delle istruzioni CIL originali alle nuove posizioni. Un profiler può usare il metodo ICorProfilerInfo::GetILToNativeMapping per ottenere l'offset CIL originale per un determinato offset nativo.
Il debugger presuppone che ogni offset precedente faccia riferimento a un offset CIL all'interno del codice CIL originale non modificato e che ogni nuovo offset faccia riferimento all'offset CIL all'interno del nuovo codice instrumentato. La mappa deve essere ordinata in ordine crescente. Per il corretto funzionamento delle istruzioni, seguire queste linee guida:
Non riordinare il codice CIL instrumentato.
Non rimuovere il codice CIL originale.
Includere le voci per tutti i punti di sequenza del file PDB (Program Database) nella mappa. La mappa non interpola le voci mancanti. Quindi, data la mappa seguente:
(0 vecchio, 0 nuovo)
(5 vecchi, 10 nuovi)
(9 vecchi, 20 nuovi)
Un offset precedente di 0, 1, 2, 3 o 4 verrà mappato al nuovo offset 0.
Un offset precedente di 5, 6, 7 o 8 verrà mappato al nuovo offset 10.
Verrà eseguito il mapping di un offset precedente di 9 o superiore a un nuovo offset 20.
Verrà eseguito il mapping di un nuovo offset pari a 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9.
Un nuovo offset di 10, 11, 12, 13, 14, 15, 16, 17, 18 o 19 verrà mappato all'offset precedente 5.
Verrà eseguito il mapping di un nuovo offset di 20 o superiore all'offset precedente 9.
In .NET Framework 3.5 e versioni precedenti si alloca la rgILMapEntries
matrice chiamando il metodo CoTaskMemAlloc . Poiché il runtime acquisisce la proprietà di questa memoria, il profiler non deve tentare di liberarlo.
Requisiti
Piattaforme: vedere Requisiti di sistema.
Intestazione: CorProf.idl, CorProf.h
Libreria: CorGuids.lib
Versioni di .NET Framework: disponibili dalla versione 1.1