DEBUG |
Déboguage |
---|---|
TRSDOS |
Syntaxe
DEBUG [(param)] |
Paramètres
Nom | Description |
---|---|
param | Ce paramètre permet d'indiquer ON ou OFF, et ON est la valeur par défaut. |
Description
Cette commande permet de lancer le programme de déboguage en temps réel.
Entrée de ligne de commande
Le DEBUG est un paquet de débogage en temps réel à utiliser avec les programmes en langage machine, y compris les tâches de premier plan et les programmes d'arrière-plan. DEBUG vous permet d'examiner et de modifier le contenu des registres du Z-80 et des emplacements RAM ; sauter aux adresses spécifiées et commencer l'exécution avec des points d'arrêt facultatifs ; parcourir les programmes une instruction (ou un CALL) à la fois, et plus encore.
Toutes les valeurs d'adresse et d'octet dans cette section DEBUG sont données sous forme hexadécimale - étant la forme requise par DEBUG.
DEBUG se charge dans la région de recouvrement ; les adresses supérieures à 51FF ne sont pas affectées.
Taper :
DEBUGENTER |
pour activer la fonction de débogage. L'interprétation normale de la commande TRSDOS continue ; mais le programme de débogage est maintenant configuré pour se charger et s'exécuter dans l'une des conditions suivantes :
- Lorsque la touche BREAK est enfoncée.
- Après le chargement d'un programme et avant l'exécution de sa première instruction.
- Lors de la détection d'une erreur liée au disque.
Remarque : les routines système TRSDOS et les routines utilisateur à exécution seule ne peuvent pas être entièrement déboguées : vous pouvez utiliser DEBUG pour examiner/modifier le registre et le contenu de la RAM, mais pas pour effectuer une seule étape, sauter,..., lorsque ces programmes protégés sont les "cibles" pour DEBUG. De plus, étant donné que DEBUG se charge dans la zone de recouvrement de la RAM, vous ne pouvez pas l'utiliser avec d'autres programmes et routines de recouvrement.
DEBUG propose deux formats d'affichage :
- Affichage des registres avec RAM indirecte plus n'importe quelle "page" ou RAM de 64 octets.
- Plein écran, page de 256 octets de RAM.
Dans le format d'affichage des registres, DEBUG affiche tous les registres Z-80, organisés pour l'interprétation soit en deux registres 8 bits, soit en paires de registres 16 bits. Étant donné que la plupart des programmes utilisent plusieurs ensembles de paires de registres comme pointeurs indirects ou registres d'indexation, 16 octets de données indirectes sont présentés avec chaque paire de registres. Chacun des registres de drapeau est représenté avec une représentation ASCII de ses bits de drapeau.
64 octets de mémoire supplémentaires sont affichés sur quatre lignes en bas de l'écran.
Voici une séquence d'affichage DEBUG typique. Notez que les valeurs de votre affichage seront généralement différentes de celles-ci.
DEBUGENTER DOS READY BREAK |
on obtiendra un résultat ressemblant à ceci :
AF = 3E 28 --1-1--- BC = 0A 3E => 09 BA C2 60 09 7D 93 C2 60 09 C9 21 27 41 CD D3 DE = 01 04 => 1A 4D 45 4D 4F 52 59 20 53 49 5A 45 00 52 41 44 HL = 00 54 => 01 01 5B 1B 0A 08 18 09 09 19 20 20 0B 78 B1 20 AF'= FF FF SZ1H1PNC BC'= 4D BE => 51 51 CD FC 51 7E 23 18 EC 02 02 00 4E 03 32 E7 DE'= 01 07 => 4D 4F 52 59 20 53 49 5A 45 00 52 41 44 49 4F 20 HL'= 4D 00 => F2 51 06 10 CD 65 51 3A 5D 40 FE 41 20 13 CD 12 IX = 40 15 => 01 E3 03 00 00 00 4B 49 07 58 04 31 3E 20 44 4F IY = FF FF => FF|F3|AC C3 74 06 C3 00 40 C3 00 40 E1 E9 C3 9F SP = 41 E8 => 52 04 DD 03 15 40 15 40 18 43 3F 3F 4C 00 E3 05 PC = 00 60 => 0B 78 B1 20 FB C9 31 00 06 3A EC 37 3C FE 02 D2 1010 => 28 10 FE 44 28 0C FE 30 28 F0 FE 2C 28 EC FC 2E 1020 => 20 03 2B 36 30 7B E6 10 28 03 2B 36 24 7B E6 04 1030 => C0 2B 70 C9 32 D8 40 21 30 41 36 20 C9 FE 05 E5 1040 => DE 00 17 57 14 CD 01 12 01 00 03 82 FA 57 10 14_ |
Dans cet affichage, le registre B contient la valeur hexadécimale 0A et le registre C contient 3E. En prenant la paire de registres BC comme pointeur, il pointe vers l'adresse 0A3E. Par conséquent, le contenu des emplacements de mémoire 0A3E à 0A4D est affiché à droite du BC = 0A3E => marqueur. Dans ce cas, l'adresse 0A3E contient 09, 0A3F contient BA,...
Les registres de drapeaux F et F' sont traités différemment. Pour ces registres, le contenu hexadécimal du registre de drapeau est affiché, ainsi qu'un code alphabétique bit par bit facilitant l'interprétation de l'état du drapeau. Par exemple, le bit 7 (le bit le plus à gauche) est le bit de signe, de sorte que le code alphabétique affiche un S dans cette position chaque fois que ce bit est "défini". Voici un tableau complet des codes pour tous les bits de drapeau :
État de bit | Si fixé | Si non fixé |
---|---|---|
7 (Signe) | S | - |
6 (Zéro) | Z | - |
5 (Inutilisé) | 1 | - |
4 (Demi retenue) | H | - |
3 (Inutilisé) | 1 | - |
2 (Parité/débordement) | P | - |
1 (Négatif) | N | - |
0 (Retenue) | C | - |
Dans l'affichage ci-dessus, aucun des bits du drapeau F n'est activé (à l'exception des bits 5 et 3 inutilisés) et tous les bits du drapeau F' sont activés.
Remarquez les quatre lignes supplémentaires sous l'affichage du registre du PC. Chaque ligne affiche le contenu de 16 octets, en commençant à l'adresse à gauche de la flèche ; les quatre lignes montrent toujours un total de 64 octets de mémoire contiguës, c'est-à-dire des emplacements avec des adresses séquentielles. Le point de départ de cet affichage à quatre lignes est soit 0000, soit la dernière commande que vous avez spécifiée avec la commande D.
La zone vide en bas à gauche de l'écran est l'endroit où les commandes que vous entrez seront affichées.
Commande DEBUG
Notez que certaines commandes sont exécutées dès que vous appuyez sur la touche de commande spécifiée ; les autres commandes ne sont exécutées que lorsque vous appuyez sur BARRE D'ESPACEMENT ou ENTER, comme indiqué ci-dessous.
Commande | Entrée requise | Opération effectuée |
---|---|---|
A | Aucun | Affiche le caractère ASCII ou graphique correspondant à chaque affichage de valeur. Affiche un point lorsque la valeur ne peut pas être affichée sous forme de caractère ASCII ou graphique. |
C | Aucun | Instruction suivante en une seule étape, avec CALLS exécutés en entier. (L'instruction suivante est définie par le registre du PC.) Le programme cible ne peut pas être un système ou un fichier d'exécution uniquement. |
Daaaa | BARRE D'ESPACEMENT | Définit l'adresse de début d'affichage de la mémoire sur aaaa. En mode plein écran, définit l'adresse de départ afin que aaaa soit contenu dans l'affichage. |
Gaaaa[,bbbb[,cccc]] | ENTER | Placez aaaa dans le registre du PC et exécute avec des points d'arrêt facultatifs à bbbb et cccc. |
H | Aucun | Affiche toutes les valeurs de mémoire et de registre sous forme hexadécimale. |
I | Aucun | Instruction suivante en une seule étape (définie par le registre du PC). Le programme cible ne doit pas être protégé en lecture. |
M[aaaa] | BARRE D'ESPACEMENT | Définit l'adresse de modification actuelle sur aaaa. La boîte de dialogue de modification s'affichera alors en bas à gauche de l'écran. Si aaaa est omis, la dernière adresse de modification sera utilisée pour aaaa. Si aaaa est actuellement affiché, son contenu sera entouré d'une paire de barres verticales. |
Rrp dddd | BARRE D'ESPACEMENT | Charge la paire de registres rp avec la valeur dddd. |
S | Aucun | Réglez l'affichage sur le mode mémoire plein écran, affichant 256 octets contigus. Appuyez sur X pour revenir au format d'affichage d'enregistrement. |
U | Aucun | Mode de mise à jour dynamique de l'affichage : permet d'observer l'exécution d'une tâche de premier plan. Maintenez n'importe quelle touche enfoncée pendant quelques secondes pour quitter ce mode. |
X | Aucun | Définit l'affichage au format de registre ; annule également toute commande que vous êtes en train d'entrer, à l'exception de la commande R. |
; | Aucun | Incrémente l'affichage de la mémoire d'une page (en mode d'affichage des registres, pager = 64 octets ; page = 256 octets en mode plein écran). |
- | Aucun | Décrémente les adresses mémoire affichées d'une page. |
Remarque : Vous ne pouvez pas utiliser la touche de retour arrière (←) pour supprimer les erreurs commises lors de la saisie des commandes. Au lieu de cela, appuyez simplement sur la touche X pour annuler la commande. Ou, si vous avez fait l'erreur en tapant une adresse ou une valeur, tapez simplement l'adresse correcte immédiatement après l'adresse incorrecte. DEBUG ne regardera que les quatre derniers chiffres entrés.
Par exemple :
D474080BARRE D'ESPACEMENT |
indique à DEBUG d'afficher la page de mémoire contenant l'adresse 4080.
En savoir plus sur la commande M (modifier la mémoire)
Chaque fois que vous souhaitez modifier le contenu d'un emplacement mémoire, tapez Maaaa et appuyez sur BARRE D'ESPACEMENT. Cela définit l'adresse de modification de la mémoire sur aaaa et place un prompt de modification de la mémoire dans le coin inférieur gauche de l'écran. Par exemple, en tapant :
7F00 => |20|00 00 00 00 00 92 B2 20 B3 B3 B3 B3 B3 B3 B3 7F00_ 7F10 => B3 B3 B3 B3 B3 B3 B3 B3 BB B3 BB B3 BB B3 BB BB 20-_ 7F20 => FB BB BB BB BB FB FB BB 00 FB FB FB FB FB FB FB 7F30 => 00 FB FF FB FF FB FF FF 00 FF FF FF FF FF FF FF |
En savoir plus sur la commande M (modifier la mémoire)
Chaque fois que vous souhaitez modifier le contenu d'un emplacement mémoire, tapez Maaaa et appuyez sur BARRE D'ESPACEMENT. Cela définit l'adresse de modification de la mémoire sur aaaa et place un prompt de modification de la mémoire dans le coin inférieur gauche de l'écran. Par exemple, en tapant :
MBARRE D'ESPACEMENT |
DEBUG utilisera par défaut la dernière adresse de modification spécifiée, le cas échéant ; sinon 0000 sera utilisé.
Fréquence, deux valeurs sur l'affichage seront mises en évidence par des barres verticales - une dans la zone d'affichage de la mémoire de 64 octets et une autre dans la zone de mémoire indirecte associée aux paires de registres.
En effet, le contenu de l'adresse de modification s'affiche deux fois, une directement, une indirectement.
En savoir plus sur la commande G
Pour revenir à TRSDOS depuis DEBUG sans réinitialiser, tapez :
G402DENTER |
DEBUG sera alors réintroduit dans l'une des trois conditions notées ci-dessus.
Pour désactiver DEBUG après avoir utilisé cet sortie, saisissez :
DEBUG (OFF)ENTER DIRENTER |
Pour commencer l'exécution à l'adresse dans le registre PC (lorsque vous êtes en mode DEBUG), tapez :
GENTER |
Pour réinitialiser TRSDOS, tapez :
G0000ENTER |
En savoir plus sur la commande U (affichage de mise à jour)
En mode mise à jour, seules les tâches de premier plan sont exécutées. Donc, pour voir quoi que ce soit qui se passe, vous devez regarder les registres ou les emplacements de mémoire utilisés par une tâche de premier plan.
L'horloge en temps réel en est un bon exemple.
Taper la commande suivante :
D4040BARRE D'ESPACEMENT |
pour afficher les valeurs 4040 à 4046. Ces adresses entreposent l'heure et la date, comme suit :
Adresse | Contenu |
---|---|
4040 | Compteur de planification en temps réel de 25 mS |
4041 | Secondes |
4042 | Minutes |
4043 | Heures |
4044 | Année |
4045 | Jour du mois |
4046 | Mois |
Appuyez maintenant sur U et vous verrez les valeurs mises à jour par la tâche de premier plan de l'horloge.
Autres applications pour DEBUG
DEBUG est accessible via DISK BASIC, pour vous aider à localiser les pointeurs de pile, les adresses de table,...
DEBUG est également un moyen pratique de créer de courts programmes en code objet, pouvant ensuite être vidés sur disquette.
Pour désactiver DEBUG
Tant que DEBUG est dans la région de recouvrement, TRSDOS peut entrer dans le programme de débogage de manière inattendue, par exemple, en cas d'erreur. Si vous ne voulez pas que cela se produise, désactivez DEBUG en tapant :
G402DENTER DEBUG (OFF)ENTER DIRENTER |