Partager via


ICorProfilerInfo::SetILInstrumentedCodeMap, méthode

Définit un plan de code pour la fonction spécifiée à l'aide des entrées de mappage de MSIL (Microsoft Intermediate Language) spécifiées.

RemarqueRemarque

Dans la version 2.0 du .NET Framework, l'appel de SetILInstrumentedCodeMap sur un FunctionID qui représente une fonction générique dans un domaine d'application particulier affecte toutes les instances de cette fonction dans le domaine d'application.

HRESULT SetILInstrumentedCodeMap(
    [in]  FunctionID functionId,
    [in]  BOOL       fStartJit,
    [in]  ULONG      cILMapEntries,
    [in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);

Paramètres

  • functionId
    [in] ID de la fonction pour laquelle définir le plan de code.

  • fStartJit
    [in] Valeur Boolean qui indique si l'appel à la méthode SetILInstrumentedCodeMap est le premier pour un FunctionID particulier. Affectez à fStartJit la valeur true dans le premier appel à SetILInstrumentedCodeMap pour un FunctionID donné, et la valeur false par la suite.

  • cILMapEntries
    [in] Nombre d'éléments dans le tableau cILMapEntries.

  • rgILMapEntries
    [in] Tableau de structures COR_IL_MAP, chacune spécifiant un offset MSIL.

Notes

Les profileurs insèrent souvent des instructions dans le code source d'une méthode pour instrumenter cette méthode (par exemple, pour avertir lorsqu'une ligne source donnée est atteinte). SetILInstrumentedCodeMap permet à un profileur de mapper les instructions MSIL d'origine à leurs nouveaux emplacements. Un profileur peut utiliser la méthode ICorProfilerInfo::GetILToNativeMapping pour obtenir l'offset MSIL d'origine pour un offset natif donné.

Le débogueur suppose que chaque ancien offset fait référence à un offset MSIL dans le code MSIL non modifié d'origine, et que chaque nouvel offset fait référence à l'offset MSIL dans le nouveau code instrumenté. Le mappage doit être trié en ordre croissant. Pour que l'exécution pas à pas fonctionne correctement, suivez ces indications :

  • Ne réorganisez pas le code MSIL instrumenté.

  • Ne supprimez pas le code MSIL d'origine.

  • Incluez les entrées de tous les points de séquence du fichier de base de données de programme (PDB) dans le mappage. Le mappage n'interpole pas les entrées manquantes. Ainsi, d'après le mappage suivant :

    (0 ancien, 0 nouveau)

    (5 anciens, 10 nouveaux)

    (9 anciens, 20 nouveaux)

    • Un ancien offset de 0, 1, 2, 3 ou 4 sera mappé à un nouvel offset de 0.

    • Un ancien offset de 5, 6, 7 ou 8 sera mappé au nouvel offset 10.

    • Un ancien offset de 9 ou supérieur sera mappé au nouvel offset 20.

    • Un nouvel offset de 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9 sera mappé à l'ancien offset 0.

    • Un nouvel offset de 10, 11, 12, 13, 14, 15, 16, 17, 18 ou 19 sera mappé à l'ancien offset 5.

    • Un nouvel offset de 20 ou supérieur sera mappé à l'ancien offset 9.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : CorProf.idl, CorProf.h

Bibliothèque : CorGuids.lib

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1

Voir aussi

Référence

ICorProfilerInfo, interface