Section courante

A propos

Section administrative du site

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 :

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 :

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


Dernière mise à jour : Samedi, le 12 Mars 2022