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.