Créer un compte - S'identifier Accueil Archives FAQ Forum Statistiques Livre d'Or Vendredi 22 Septembre 2017 à 08:17:13
Comment utiliser le debugger de VTI ?

Suite à la demande de certains, voici une explication très détaillée du fonctionnement du debugger (excepté pour le menu de log) :

Pour accéder au debuggeur, appuyez sur F11.

Analysons chaque zone de la fenêtre (notez que toutes les valeurs sont en hexadécimal) :
La zone principale (Code) contient le contenu de la mémoire, désassemblé : à gauche l'adresse du premier octet de l'instruction qui se trouve à côté, au milieu l'instruction elle-même et à droite ses opérandes. Le nombre d'octets occupés par une ligne dépend de l'instruction et de ses opérandes, c'est pourquoi entre chaque ligne on saute parfois de 2 octets, parfois de 4, etc. (il suffit de regarder l'adresse à gauche pour s'en rendre compte).
En cliquant avec le bouton droit de la souris, on voit les différentes options disponibles :
— « Go to address... » pour se rendre à l'adresse spécifiée
— « Go to PC » pour allez à l'adresse contenue dans le compteur programme (ou compteur ordinal)
— « Set breakpoint » pour placer un breakpoint à l'endroit où se situe le curseur (un breakpoint est une « marque » que l'on pose, mais qui ne modifie pas le contenu du programme. Lorsque vous lancez le programme dans lequel vous avez placé le breakpoint, l'exécution s'arrêtera juste avant d'exécuter l'instruction marquée d'un breakpoint et la fenêtre du debugger s'ouvrira)
— « Set PC to selection » pour mettre dans le compteur programme l'adresse de la ligne sélectionnée

En dessous (zone Memory), la mémoire non désassemblée : à gauche l'adresse du premier octet de la ligne, au milieu le contenu de la mémoire en hexadécimal et à droite l'équivalent ASCII.
Notez que la zone de la mémoire représentée ici n'est pas forcément la même zone que celle représentée en dessus.
Vous pouvez modifier la valeur d'un octet en double-cliquant dessus dans la zone en hexadécimal. Toujours dans la même zone, en cliquant avec le bouton droit de la souris, vous faites apparaître un menu avec comme options :
— « Go to address... » pour se rendre à l'adresse voulue
— « Set data breakpoint... » pour placer un breakpoint
— « Search for value...» pour rechercher un octet (Single Byte), un mot (Single Word), un long mot (Single Long) ou une chaîne de caractères (Character String).

En haut à droite (zone Registers), tout d'abord le contenu des 32 bits des registres de données et d'adresses (D0 à D7 et A0 à A7). En dessous, SR, les 16 bits du registre d'état (status register). Le détail du registre d'état se trouve juste en dessous : C, V, Z, N et X pour l'octet utilisateur et I, M, S et T pour l'octet superviseur. Notez que I est la représentation en un seul digit des trois bits I0, I1 et I2 (I peut donc varier entre 0 et 7).
Enfin, à droite de SR, PC, le compteur programme et ses 24 bits utiles.
Pour connaître l'utilité de ces registres, voyez dans la section programmation.
Vous pouvez modifier le contenu de chacun des éléments de cette zone simplement en cliquant dessus.

La zone en dessous (Stack) représente la pile : à gauche l'adresse du premier octet des deux qui sont représentés à droite. Notez que la première adresse correspond bien au contenu de A7, le pointeur de pile. Le fait que ce soit l'adresse la plus petite montre bien que les données sont stockées « à l'envers » dans la pile : les plus anciennes étant à des adresses supérieures.
Il n'y a pas de moyen pour modifier directement une valeur de la pile. Cependant, vous pouvez le faire dans la zone Memory en vous rendant à l'adresse de la pile.

En bas à droite (zone Handles) vous avez la liste des handles avec à gauche leur numéro et à droite l'adresse à laquelle ils correspondent.
Le menu qui apparaît lorsque vous cliquez dessus avec le bouton droit de la souris propose deux options :
— « View memory » a le même effet qu'un double-clique sur le handle : il « envoie » la zone Memory sur l'adresse correspondante au handle sélectionné.
— « View disassembly » a la même fonction, mais pour la zone Code.

Maitenant, les menus de la barre d'outils :
Dans Debgug :
— « Run » quitte le debugger et l'exécution reprend normalement.
— « Step » exécute la prochaine instruction seulement.
— « Step over » à la même fonction que Step si ce n'est lors d'un JSR ou BSR : au lieu d'effectuer simplement le saut, la routine entière appelée par JSR ou BSR est exécutée.
— « Run to cursor » reprend l'exécution jusqu'au curseur (jusqu'à la ligne sélectionnée dans la zone Code).
— « Break » interrompt l'exécution.
Dans Breakpoints :
— « Set breakpoint at selection » place un breakpoint là où est le curseur dans la zone Code.
— « Set breakpoint on program entry... » ouvre une fenêtre dans laquelle vous pourrez sélectionner un programme. Un breakpoint sera placé au début du code du programme. Lorsque vous lancerez le programme en question, le debugger s'ouvrira automatiquement.
— « Set data breakpoint... » permet de gérer la liste des « data breakpoints ». Vous pouvez en ajouter un en cliquant sur Add. Une fenêtre s'ouvre alors, dans laquelle vous pouvez choisir dans quel(s) cas l'exécution devra être interrompue (Read = lorsque la donnée est lue, Write = lorsqu’on y écrit et Either = l'un ou l'autre) et quelle est la donnée à « surveiller ». Vous pouvez ensuite spécifier s’il s'agit d'une zone dans les ports I/O, et si vous voulez surveiller un octet, un mot ou un long mot (dans ce cas, prenez « Single » avec respectivement « Byte », « Word » ou « Long ») ou toute une plage d'adresses (dans ce cas, prenez « Range » et spécifiez l'adresse de départ et l'adresse d'arrivée).
— « Set breakpoint on trap/exception... » permet de spécifier lors de quels événements le debugger doit être appelé. Les événements sous « Exceptions » et « Auto-ints » sont déclenchés pour la plupart lors d'erreurs ou à intervalles de temps réguliers, ou lors d'une action de l'utilisateur sur le hardware de la calculatrice (port link ou clavier). Les « Traps » sont des événements déclenchés par l'instruction trap dans un programme assembleur (trap #12 par exemple) et sont souvent utilisées pour appeler certaines routines d'AMS ou pour passer en mode superviseur.

Aucun commentaireAjoutée par @RHJPP le Dimanche 11 Septembre 2005 à 16:51:23. (2640 lectures)

Commentaires

Aucun commentaire n'a été encore posté.

Poster un commentaire
Titre
Commentaire

[B]old [I]talic [U]nderline [S]trikethrough [L]ine Code [K] [Q]uote Link [H] [E]mail Picture [M] Smileys [G] Help [J]

 Activer les smileys  
Ver:1.0 moved on CalcForge.org (2013-01-26) Copyright ©2005 By Geoffrey ANNEHEIM & Frédéric BOUR
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 251.61 ms avec 15 requêtes.

Graphic theme: Geoffrey ANNEHEIM