Volet Désassemblage

De RAD Studio
Aller à : navigation, rechercher

Remonter à Fenêtres CPU - Index


Voir > Fenêtres de débogage > Fenêtres CPU > Désassemblage

Affiche l'adresse, la représentation hexadécimale des instructions en code machine (opcodes) et les instructions d'assemblage de chaque ligne de code source. L'adresse est le décalage dans la méthode désassemblée. Le volet Désassemblage est situé dans le coin supérieur gauche de la fenêtre quand la vue Tout CPU est affichée (Voir > Fenêtres de débogage > Fenêtres CPU > Tout CPU).

Si les informations de débogage sont disponibles, le débogueur affiche le code source qui correspond aux instructions d'assemblage.

Une flèche droite (Point d'exécution) à gauche d'une adresse indique le point d'exécution en cours.

Quand l'instruction en cours est une instruction de transfert (call ou jmp, par exemple), une flèche vers le haut ou vers le bas figurant après l'instruction indique la direction cible de l'instruction de transfert. Par exemple, si la cible est située avant l'instruction en cours, une flèche vers le haut apparaît. Si la cible est située après l'instruction en cours, une flèche vers le bas apparaît.

Concernant les instructions de transfert conditionnelles (telles que jz ou jle), une flèche ne s'affiche que si la condition est vraie. Concernant les instructions de définition conditionnelles (telles que seta ou setz), une flèche gauche s'affiche si la condition est vraie.

Défilement du volet Désassemblage

Utilisez les méthodes suivantes pour faire défiler le volet Désassemblage :

  • Appuyez sur CTRL+FLECHE GAUCHE ou CTRL+FLECHE DROITE pour décaler le point de départ de l'affichage d'un octet vers le haut ou vers le bas. Le changement du point de départ de l'affichage modifie l'emplacement auquel le débogueur commence à désassembler le code machine.
  • Cliquez au-dessus ou au-dessous du curseur de la barre de défilement verticale pour faire défiler d'un écran vers le haut ou vers le bas. En raison du volume important d'informations pouvant être affichées dans le volet Désassemblage, le glissement du curseur de la barre de défilement est désactivé.
  • Utilisez les commandes de menu contextuel Aller à l'adresse, Aller à l'EIP en cours, Suivre et Précédent, décrites dans le tableau suivant.


Menu contextuel

Elément Description

Activé

Disponible uniquement lorsque vous cliquez avec le bouton droit sur un point d'arrêt. Bascule le point d'arrêt de l'état activé à l'état désactivé (et vice-versa).

Propriétés du point d'arrêt

Disponible uniquement lorsque vous cliquez avec le bouton droit sur un point d'arrêt. Affiche la boîte de dialogue Propriétés du point d'arrêt adresse.

Exécuter jusque là

Exécute votre programme à vitesse normale jusqu'à l'instruction que vous avez sélectionnée dans la fenêtre CPU. Après l'interruption de votre programme, vous pouvez utiliser cette commande pour reprendre le débogage à une instruction particulière.

Basculer le point d'arrêt

Définit ou supprime un point d'arrêt à l'adresse actuellement sélectionnée.

Aller à l'adresse

Affiche la boîte de dialogue Adresse de positionnement, dans laquelle vous pouvez entrer un symbole ou, pour le code managé, une adresse dans le format de compilateur JIT (Just-In-Time).

Aller à l'EIP en cours

Positionne la fenêtre CPU à l'emplacement indiqué par le compteur de programme en cours (l'emplacement indiqué par le registre EIP). Cet emplacement indique la prochaine instruction qui sera exécutée par votre programme.

Suivre

Positionne le volet à l'adresse de destination de l'instruction sélectionnée.

Utilisez la commande Suivre avec les instructions qui entraînent un transfert de contrôle (comme CALL, JMP et INT) et avec les instructions de branchement conditionnel (comme JZ, JNE, LOOP, etc.). Pour les branchements conditionnels, l'adresse est montrée comme si la condition était true. Utilisez la commande Précédent pour revenir à l'origine du saut.

Appelant

Positionne le volet Désassemblage sur l'instruction qui suit celle qui a appelé l'interruption ou le sous-programme en cours. Si la routine d'interruption en cours a placé des éléments de données dans la pile, le débogueur risque de pas pouvoir déterminer de quel point du programme la routine a été appelée.
Appelant fonctionne mieux si vous activez l'option Cadres de pile sous Génération de code sur la boîte de dialogue Projet > Options > Compilation (Delphi) ou activez Cadres de pile standard sur la boîte de dialogue Projet > Options > Compilateur C++ (C++).

Précédent

Restitue à la fenêtre CPU l'affichage qu'elle avait avant la dernière commande Suivre.

Chercher

Affiche la boîte de dialogue d'entrée des octets à rechercher, qui vous permet de rechercher dans la fenêtre CPU une expression ou liste d'octets (cliquez sur Aide sur la boîte de dialogue d'entrée des octets à rechercher pour plus de détails).

Voir le source

Active l'éditeur de code et positionne le point d'insertion sur la ligne de code source qui correspond le mieux à l'instruction désassemblée sélectionnée dans la fenêtre CPU. S'il n'y a pas de code source correspondant, cette commande est sans effet.

Source mixte

Bascule l'affichage entre les instructions d'assemblage uniquement et celles-ci et leur code source correspondant (si les informations de débogage sont disponibles).

Code IL mixte

Quand vous déboguez du code managé, bascule l'affichage pour inclure les instructions MSIL.

Afficher les adresses

Inclut les adresses des instructions.

Afficher les codes opératoires

Inclut les codes opératoires des instructions. Les choix sont Auto, Toujours et Jamais. La valeur par défaut est Auto. Elle affiche les codes opératoires si la fenêtre est assez large pour contenir la colonne des codes opératoires.

Nouveau EIP

Change l'emplacement du pointeur d'instruction (la valeur du registre EIP) par la ligne mise en surbrillance dans le volet Désassemblage. Utilisez cette commande lorsque vous voulez sauter certaines instructions machine. Lorsque vous reprenez l'exécution du programme, elle commence à cette adresse. Cette commande n'est pas identique à l'exécution pas à pas des instructions ; le débogueur n'exécute pas les instructions que vous voulez sauter.

Attention : Utilisez cette commande avec le plus grand soin ; il est facile de déstabiliser votre système lorsque vous sautez certaines instructions d'un programme. Il est possible que le cadre de pile et les recensements ne soient pas exacts pour l'emplacement en cours du programme.

Copier

Copie toutes les instructions sélectionnées dans le Presse-papiers. A partir du volet de désassemblage, vous pouvez sélectionner une seule instruction ou utiliser la touche MAJ pour en sélectionner plusieurs. Dans tous les autres volets, vous ne pouvez sélectionner qu'un seul élément à copier.

Voir FPU

Affiche la vue FPU, qui affiche les registres en virgule flottante, les registres MMX et les registres SSE.

Voir aussi