Afficher le code machine dans le débogueur Visual Studio (C#, C++, Visual Basic, F#)

La fenêtre Code Machine affiche le code assembleur correspondant aux instructions créées par le compilateur. Si vous déboguez du code managé, ces instructions assembleur correspondent au code natif créé par le compilateur juste-à-temps (JIT), et non au code MSIL (Microsoft Intermediate Language) créé par le compilateur Visual Studio.

Notes

Pour tirer pleinement parti de la fenêtre Désassemblage, comprenez ou apprenez les principes de base de la programmation en langage assembleur. Les documents de référence pour les jeux d’instructions Intel se trouvent dans le 2e volume des manuels d’architecture. Ce matériel s’applique généralement aux jeux d’instructions AMD.

Cette fonctionnalité n’est disponible que si le débogage au niveau de l’adresse est activé. Elle n'est pas disponible pour le débogage de script ni le débogage SQL.

Outre les instructions en assembleur, la fenêtre Code Machine peut afficher les informations facultatives suivantes :

  • L'adresse mémoire de chaque instruction. Pour les applications natives, il s'agit effectivement de l'adresse mémoire. Pour Visual Basic ou C#, il s’agit d’un décalage par rapport au début de la fonction.

  • Le code source dont est tiré le code assembleur.

  • Octets du code, à savoir la représentation sous forme d’octets des instructions machine ou MSIL réelles.

  • Les noms des symboles pour les adresses mémoire.

  • Les numéros de ligne correspondant au code source.

Les instructions en langage assembleur sont constituées de mnémoniques, qui sont des abréviations des noms d'instructions, et de symboles représentant des variables, des registres et des constantes. Chaque instruction en langage machine est représentée par un mnémonique en langage assembleur, éventuellement suivi d'un ou de plusieurs symboles.

Le code assembleur s’appuie fortement sur les registres de processeur ou, pour le code managé, sur les registres du Common Language Runtime. Vous pouvez utiliser la fenêtre Désassemblage avec la fenêtre Registres, ce qui vous permet d’examiner le contenu des registres.

Pour afficher les instructions de code machine sous leur forme numérique brute, plutôt que sous forme de langage d’assembly, utilisez la fenêtre Mémoire ou sélectionnez Octets de code dans le menu contextuel de la fenêtre Désassemblage.

Utiliser la fenêtre Code Machine

Pour activer la fenêtre Désassemblage, sousOutils>Options>Débogage, sélectionnez Activer le débogage au niveau de l’adresse.

Pour ouvrir la fenêtre Désassemblage pendant le débogage, sélectionnezFenêtres>Désassemblage ou appuyez sur Alt+8.

Notes

Les boîtes de dialogue et les commandes de menu affichées peuvent différer de celles décrites dans l'Aide selon les paramètres actifs ou le mode d'édition. Pour modifier vos paramètres, choisissez Paramètres d'importation et d'exportation dans le menu Outils . Pour plus d’informations, consultez Réinitialiser tous les paramètres.

Pour activer ou désactiver les informations facultatives, effectuez un clic droit dans la fenêtre Désassemblage, puis définissez ou désactivez les options souhaitées dans le menu contextuel.

Une flèche jaune dans la marge de gauche marque le point d’exécution actuel. Pour le code natif, ce point d’exécution correspond au compteur de programme de processeur. Cet emplacement montre l'instruction suivante qui sera exécutée dans votre programme.

Se déplacer d’une page vers le haut ou vers le bas dans la mémoire

Quand vous affichez le contenu de la mémoire dans la fenêtre Mémoire ou Code Machine, vous pouvez vous servir de la barre de défilement verticale pour vous déplacer dans l’espace mémoire.

  1. Pour vous déplacer d'une page vers le bas (atteindre une adresse mémoire supérieure), cliquez dans la barre de défilement verticale au-dessous de la case de défilement.

  2. Pour vous déplacer d'une page vers le haut (atteindre une adresse mémoire inférieure), cliquez dans la barre de défilement verticale au-dessus du curseur.

    Remarquez que la barre de défilement verticale ne se comporte pas de manière habituelle. L'espace adresse d'un ordinateur moderne est très importante, et il serait facile de se perdre en faisant glisser le curseur de défilement vers un emplacement aléatoire. Pour cette raison, le curseur est « fixé » et reste toujours au milieu de la barre de défilement. Dans les applications en code natif, vous pouvez vous déplacer d'une page vers le haut ou vers le bas, mais il est impossible de défiler librement.

    Dans les applications managées, le désassemblage se limitant à une fonction, vous pouvez utiliser le défilement normal.

    Remarquez que l'adresse la plus haute est affichée en bas de la fenêtre. Pour afficher une adresse plus haute, vous devez descendre et non pas monter.

Monter ou descendre d’une instruction

  • Cliquez sur la flèche en haut ou en bas de la barre de défilement vertical.