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 FunctionIDoggetto . Impostare fStartJit su true nella prima chiamata a SetILInstrumentedCodeMap per un determinato FunctionIDoggetto 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

Vedi anche