Commande : debug
DEBUG est un clone de la commande DEBUG de MS-DOS. Certaines choses
mineures ne sont pas implémentées. DEBUG ne supporte pas seulement les
registres et les jeux d'instruction 8086/8088 et 8087 mais aussi les
registres et jeux d'instruction jusqu'au processeur PentiumPro - sauf
les extensions MMX.
DEBUG est un outil DOS relativement avancé mais il a de nombreuses
utilisations. Par exemple, il peut être utilisé pour :
* trouver des bugs dans les programmes,
* créer des programmes en partant du code assembleur,
* inspecter et éditer des fichiers binaires.
Syntaxe :
DEBUG [[lecteur:][chemin]nomdefichier [listearg]]
[lecteur:][chemin]nomfich Spécifie le fichier que vous souhaitez
tester. Il n'est pas nécessaire que ce
soit un exécutable - ce pourrait être un
binaire ou un fichier texte. Comme il
peut s'agit de n'importe quel fichier,
l'extension doit être spécifiée.
listearg Spécifie les informations de ligne de
commande requises par le fichier que
vous souhaitez tester.
Voyez Exécution de programmes ci-dessous
pour plus d'informations sur le lancement
d'exécutables.
Une fois que Debug est lancé, l'invite de commandes de Debug
s'affiche. Entrez Q pour quitter Debug et ? pour une liste de
commandes.
Options :
Q Quitter
? Aide
Inspection et Édition de la mémoire :
COMPARER :
C plage d'adresse Compare deux plages de mémoire et affiche les
différences. Seule l'adresse de départ de la
seconde plage est requise, Debug supposera que
la seconde plage aura la même taille que la
première.
Par exemple :
C 100,110 200
comparera la plage 100,110 to 200,210.
DUMP :
D [range] Affiche le contenu d'une plage de mémoire. Si
aucune plage n'est spécifiée, dump affichera
128 octets, démarrant là où le dernier dump
s'est terminé ou au début du fichier chargé.
DM Affiche la chaîne de bloc de contrôle de la
mémoire DOS (MCB) et le PSP actuel.
ENTRER :
E adresse [liste] Écrit sur une partie de la mémoire, commençant
l'adresse et avec la liste des octets. Pour
entrer une chaîne de texte, mettez-le entre
des guillemets anglais.
Par exemple :
E 100 "Salut !"
REMPLIR :
F plage liste Écrit sur une plage de la mémoire avec une liste
répétitive d'octets. Par exemple, pour mettre une
plage de mémoire à zéro, vous pourriez mettre
E 100,110 0
et pour mettre "brumbrum" sur une plage de
mémoire :
E 100,107 "brum"
DÉPLACER :
M plagesource adressedest
Copie la plage plagesource vers une autre plage
qui démarre à adressedest.
RECHERCHER :
S plage liste Recherche toutes les occurrences de la liste
d'octets dans la plage spécifiée. L'adresse de
démarrage de chaque occurrence est affichée.
Calcul de nombres en hexadécimal :
HEX
H valeur1 valeur2 Affiche deux nombres,
le premier étant valeur1+valeur2
le second étant valeur1-valeur2.
H peut gérer les valeurs dword.
Chargement et sauvegarde des fichiers :
CHARGEMENT D'UN PROGRAMME OU D'UN FICHIER :
L [adresse] Charge le programme.
L adresse lecteur secteur numéro
Charge les secteurs.
DÉFINIR LE NOM :
N [[lecteur:][chemin]nomprog [listearg]]
Définit le nom pour le fichier/programme actuel.
ÉCRIRE UN PROGRAMME OU UN FICHIER :
W [adresse] Écrit le programme/fichier actuel sur le disque.
Utilisez N pour changer le nom si vous ne
souhaitez pas écraser le fichier original.
W adresse lecteur secteur numéro
Écrit les secteurs.
Assemblage et désassemblage :
ASSEMBLAGE :
A [adresse] Assemble.
DÉSASSEMBLAGE :
U [plage] Désassemble.
MODE 80x86 :
M[réglage] Le processeur actuel (pour les avertissements
d'assembleur et de désassembleur, ci-dessus)
peut être déclaré comme étant un autre
processeur avec les commandes suivantes :
m0 Déclare que le processeur actuel est
un 8088
m1 Déclare un 80186
m2 Déclare un 286
m3 Déclare un 386
m4 Déclare un 486
m5 Déclare un Pentium
m6 Déclare un Pentium Pro
MC Déclare l'existence d'un coprocesseur
mathématique.
MNC Déclare l'absence d'un coprocesseur mathématique
MC2 Déclare que le coprocesseur mathématique est
un 287 (valide seulement si le processeur
actuel est un 386)
M? (versions anciennes seulement) : affiche le type
de processeur actuellement déclaré
M Affiche le type de processeur actuellement
déclaré
Exécution d'un programme :
ALLER À (GO) :
G [=adresse] [points d'arrêt]
Démarre l'exécution du programme chargé ou du
code machine à l'adresse spécifiée. L'exécution
est suspendue aux adresses de point d'arrêt,
vous permettant d'inspecter la mémoire, etc.
PROCÉDER :
P [=adress] [nombret]
Procéde à l'exécution par étapes.
REGISTRE :
R [registre [valeur]]
Affiche tous les registres du processeur, ou
affiche ou définit un registre particulier.
Accepte les noms de registre 32 bit (pour les
processeurs 80386+).
RN Affiche l'état du registre FPU. DEBUG
n'affichera que les valeurs brutes hexadécimales
des registres, alors que DEBUGX affichera les
valeurs au format virgule flottante.
RX Bascule entre l'affichage des registres 8086 et
80386 (pour les processeurs 80386+).
TRACE :
T [=adresse] [numéro]
Trace
TM [0|1] Définit le mode de commande de traçage,
0=process INTs (valeur par défaut),
1=single-step INTs (le mode compatible
avec MS-DOS).
Port E/S :
ENTRÉE :
I port Entrée depuis un port
IW port Entrée depuis un port WORD
ID port Entrée depuis un port DWORD
Les valeurs DWORD nécessitent un processeur
80386+.
SORTIE :
O port value Sortie vers un port
OW port valeur Sortie vers port WORD
OD port valeur Sortie vers un port DWORD.
Les valeurs DWORD nécessitent un processeur
80386+.
Commandes de mémoire étendue (EMS) (seulement si un EMM v4.0
est présent) :
XA nombre Attribue un descripteur EMS 'vide' avec
zéro page.
XD indicateur Désallouer.
XM indicateur page logique page physique
Mappe la mémoire.
XR indicateur nombre Réattribue un indicateur EMS handle.
XS Affiche l'état.
X? Affiche l'aide sur la commande X.
Commentaires :
DEBUG utilise l'hexadécimal (base 16). Les adresses mémoire sont
affichées sous la forme segment:offset, par ex. 0D00:0100. Les quatre
derniers chiffres hexadécimaux qui spécifient l'offset du segment
peuvent aller de 0000 à FFFF, soit une plage de 64 Ko.
Les exécutables avec l'extension .com ont toutes leurs données et leur
code en un segment. Donc pour les fichiers .com vous pouvez
généralement simplement écrire l'offset lors de la spécification
d'adresses mémoire avec les commandes DEBUG. DEBUG supposera le
segment du programme.
C'est aussi vrai pour les fichiers textes/binaires qui font moins
de 64K. Pour spécifier une plage mémoire, séparez deux adresses avec
une virgule.
Le chargement des fichiers .HEX n'est pas implémenté dans DEBUG.
L'assembleur et le désassembleur supportent toutes les instructions
documentées publiquement pour les puces Intel jusqu'au Pentium Pro
(P6), sauf pour les instructions MMX. L'assembleur et le désassembleur
vous informent si une instruction est inappropriée pour le processeur
actuel. Les FPU Opcodes sont pris en charge.
Exemples :
Création d'une sauvegarde du secteur d'amorçage (secteur numéro 0
avec 512 octets =0x200) du lecteur C: (numéro 2) sur le fichier
BOOT_C.BIN sur disquette A:
A:
cd \
echo L 100 2 0 1 >BOOT_C.TXT
echo RCX >>BOOT_C.TXT
echo 200 >>BOOT_C.TXT
N BOOT_C.BIN >>BOOT_C.TXT
W >>BOOT_C.TXT
Q >>BOOT_C.TXT
DEBUG <BOOT_C.TXT
Recherche avec DEBUG dans la RAM de la carte graphique de certains
caractères spéciaux tels que l'année pour identifier la carte :
DEBUG
S C000:0000,07FF "BIOS"
S C000:0,7FF "(C)"
S c000:0,7ff "199"
s c000:0,7ff "200"
D C000:0000,100
Q
Voir également :
(emm386)
jemm386
jemmex
undelete
Copyright © 2003 Robert Platt, mis à jour en 2008 par W. Spiegl.
Traduit en 2020 par Berki Yenigün.
Ce fichier est dérivé de FreeDOS Spec Command HOWTO.
Voyez le fichier H2Cpying pour les conditions de copie.