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 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 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