Condividi tramite


Metodo ICorProfilerInfo::SetILInstrumentedCodeMap

Imposta una mappa di codice per la funzione specificata utilizzando le voci di mapping MSIL (Microsoft Intermediate Language) specificate.

NotaNota

In .NET Framework versione 2.0 la chiamata di SetILInstrumentedCodeMap su un FunctionID che rappresenta una funzione generica in un determinato dominio applicazione inciderà su tutte le istanze di tale funzione nel dominio applicazione.

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 la quale impostare la mappa di codice.

  • fStartJit
    [in] Valore booleano che indica se la chiamata al metodo SetILInstrumentedCodeMap è la prima per un determinato FunctionID. Impostare fStartJit su true nella prima chiamata a SetILInstrumentedCodeMap per un determinato FunctionID e successivamente su false.

  • cILMapEntries
    [in] Numero di elementi nella matrice cILMapEntries.

  • rgILMapEntries
    [in] Matrice di strutture COR_IL_MAP, ognuna delle quali specifica un offset MSIL.

Note

Un profiler spesso inserisce istruzioni all'interno del codice sorgente di un metodo allo scopo di eseguire la strumentazione di tale metodo, ad esempio per notificare quando viene raggiunta una particolare riga di tale codice. SetILInstrumentedCodeMap consente a un profiler di eseguire il mapping delle istruzioni MSIL originali ai rispettivi nuovi percorsi. Un profiler può utilizzare il metodo ICorProfilerInfo::GetILToNativeMapping per ottenere l'offset MSIL originale per un determinato offset nativo.

Il debugger presumerà che ogni vecchio offset faccia riferimento a un offset MSIL all'interno del codice MSIL non modificato originale e che ogni nuovo offset faccia riferimento all'offset MSIL all'interno del nuovo codice instrumentato. La mappa deve essere ordinata in sequenza crescente. Per consentire un corretto funzionamento del debug passo a passo, attenersi alle seguenti istruzioni:

  • Non riordinare un codice MSIL per il quale è stata eseguita la strumentazione.

  • Non rimuovere il codice MSIL originale.

  • Includere nella mappa le voci per tutti i punti di sequenza del file del database di programma (PDB). La mappa non effettua l'interpolazione delle voci mancanti. Data la mappa seguente quindi:

    (0 vecchio, 0 nuovo)

    (5 vecchio, 10 nuovo)

    (9 vecchio, 20 nuovo)

    • Un vecchio offset uguale a 0, 1, 2, 3 o 4 verrà mappato al nuovo offset 0.

    • Un vecchio offset uguale a 5, 6, 7 o 8 verrà mappato al nuovo offset 10.

    • Un vecchio offset uguale o maggiore di 9 verrà mappato al nuovo offset 20.

    • Un nuovo offset uguale a 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9 verrà mappato al vecchio offset 0.

    • Un nuovo offset uguale a 10, 11, 12, 13, 14, 15, 16, 17, 18 o 19 verrà mappato al vecchio offset 5.

    • Un nuovo offset uguale o maggiore di 20 verrà mappato al vecchio offset 9.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1

Vedere anche

Riferimenti

Interfaccia ICorProfilerInfo