Partager via


ICorProfilerInfo::SetILInstrumentedCodeMap, méthode

Définit un mappage de code pour la fonction spécifiée à l’aide des entrées de mappage CIL (Common Intermediate Language) spécifiées.

Remarque

Dans .NET Framework version 2.0, l’appel de SetILInstrumentedCodeMap sur une 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.

Syntaxe

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 mappage de code.

fStartJit
[in] Valeur booléenne qui indique si l’appel à la méthode SetILInstrumentedCodeMap est la première pour une classe FunctionID. Définissez fStartJit sur true dans le premier appel à SetILInstrumentedCodeMap pour un FunctionID et pour falsepar la suite.

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

rgILMapEntries
[in] Tableau de structures COR_IL_MAP, chacune spécifiant un décalage CIL.

Notes

Un profileur insère souvent des instructions dans le code source d’une méthode afin d’instrumenter cette méthode (par exemple, pour notifier lorsqu’une ligne source donnée est atteinte). SetILInstrumentedCodeMap permet à un profileur de mapper les instructions CIL d’origine à leurs nouveaux emplacements. Un profileur peut utiliser la méthode ICorProfilerInfo ::GetILToNativeMapping pour obtenir le décalage CIL d’origine pour un décalage natif donné.

Le débogueur suppose que chaque ancien décalage fait référence à un décalage CIL dans le code CIL d’origine, non modifié, et que chaque nouveau décalage fait référence au décalage CIL dans le nouveau code instrumenté. La carte doit être triée dans l’ordre croissant. Pour que le pas à pas fonctionne correctement, suivez les instructions suivantes :

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

  • Ne supprimez pas le code CIL d’origine.

  • Incluez les entrées pour tous les points de séquence du fichier de base de données de programme (PDB) dans la carte. La carte n’interpole pas les entrées manquantes. Ainsi, étant donné la carte suivante :

    (0 ancien, 0 nouveau)

    (5 anciens, 10 nouveaux)

    (9 anciens, 20 nouveaux)

    • Un ancien décalage de 0, 1, 2, 3 ou 4 sera mappé à un nouveau décalage 0.

    • Un ancien décalage de 5, 6, 7 ou 8 sera mappé à un nouveau décalage 10.

    • Un ancien décalage de 9 ou version ultérieure est mappé au nouveau décalage 20.

    • Un nouveau décalage de 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9 sera mappé à l’ancien décalage 0.

    • Un nouveau décalage de 10, 11, 12, 13, 14, 15, 16, 17, 18 ou 19 sera mappé à l’ancien décalage 5.

    • Un nouveau décalage de 20 ou version ultérieure sera mappé à l’ancien décalage 9.

Dans .NET Framework 3.5 et les versions précédentes, vous allouez le tableau rgILMapEntries en appelant la méthode CoTaskMemAlloc. Étant donné que le runtime prend possession de cette mémoire, le profileur ne doit pas tenter de le libérer.

Spécifications

Plateformes : Consultez Configuration requise.

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

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 1.1

Voir aussi