FreeDOS help system (hhstndrd 1.0.8 de)[debug]

Befehl: debug

DEBUG ist ein Nachbau des gleichnamigen MS-DOS Befehls. Einige kleinere Dinge sind nicht implementiert. Es unterstützt nicht nur die 8086/8088 und 8087 Register und Befehlssätze, sondern auch die 32bit Register und Befehlsätze bis zur PentiumPro CPU - mit Ausnahme der MMX-Erweiterungen. DEBUG ist ein relativ weit fort- geschrittenes DOS-Werkzeug für viele Anwendungen. Zum Beispiel kann es benutzt werden zum: * Finden von Fehlern in Programmen, * Erstellen von Programmen durch Assembler-Code, * Inspizieren und Bearbeiten von Binär-Dateien.

Syntax:

DEBUG [[Laufwerk:][Pfad]Dateiname [Argumente]] [Laufwerk:][Pfad]Dateiname Gibt die Datei an, die getestet werden soll. Diese muß nicht ausführbar sein. Es kann auch eine Binär- oder Text-Datei sein. Daher muß auch die Dateinamens- Erweiterung angegeben werden. Argumente Befehlszeilenparameter für die zu testende Datei. Siehe Programmausführung unten, für weitere Informationen über den Aufruf von ausführbaren Dateien. Nach dem Start von Debug erwartet das Programm hinter dem Bindestrich die Eingabe von Kommandos, wie Q zum Beenden oder ? zur Auflistung der Befehle.

Optionen:

Q Beenden (Quit) ? Hilfe Inspektion und Bearbeiten vom Speicher: VERGLEICHEN (COMPARE): C Bereich Adresse Vergleicht zwei Speicherbereiche und zeigt die Unterschiede an. Nur die Start-Adresse des zweiten Bereiches ist nötig. Dann wird für die Größe die gleiche wie beim ersten angenommen. Zum Beispiel: C 100,110 200 vergleicht den Bereich von 100,110 mit 200,210. DUMP: D [Bereich] Zeigt den Inhalt des Speicherbereiches. Ohne Bereichsangabe werden 128 Bytes ausgegeben ent- weder ab der Stelle der letzten DUMP Ausgabe oder dem Beginn der geladenen Datei. DM Anzeige der DOS-Speicher-Steuerblock-Kette (Memory Control Block) und des aktuellen PSP. EINGABE: E Adresse [Liste] Überschreibt den Teil des Speichers, beginnend ab der Adresse, mit der Liste der Bytes. Für Eingabe einer Zeichenfolge setzen sie den Text in Anführungszeichen. Zum Beispiel: E 100 "Hallo!" FUELLEN: F Bereich Liste Überschreibt einen Speicherbereich mit einer sich wiederholenden Liste von Bytes. Um etwas auszunullen, benutzen sie zum Beispiel: E 100,110 0 Zum Fuellen mit dem Text "brumbrum" benutzen Sie: E 100,107 "brum" VERSCHIEBEN (MOVE): M Quellbereich Zieladresse Kopiert den Quellbereich in einen anderen be- ginnend ab der Zieladresse. SUCHE: S Bereich Liste Sucht nach alle Vorkommen der Liste von Bytes in dem festgelegten Bereich und zeigt deren Startadressen an. Berechnung von Zahlen in Hexadezimal: HEX H Wert1 Wert2 Zeigt die Summe und Differenz der zwei angege- benen Zahlen. Doppelwort-Werte können gehand- habt werden. Laden und Speichern von Dateien: LADE PROGRAMM ODER DATEI: L [Adresse] Lade Programm. L Adresse Laufwerk Sektor Sektorzahl Lade Sektor(en). NAMENSVERGABE: N [[Laufwerk:][Pfad]Programmnamen [Argumentenliste]] Namen für die aktuelle Datei, Programm festlegen. SCHREIBE (WRITE) PROGRAMM ODER DATEI: W [Adresse] Schreibt das aktuelle Programm, Datei auf die Platte. Verwenden Sie N, um den Namen ändern, wenn sie nicht die ursprüngliche Datei über- schreiben möchten. W Adresse Laufwerk Sektor Zahl Schreibt Sektor(en). Assemblierung und Disassemblierung: ASSEMBLIERUNG: A [Adresse] Assemblieren. DISASSEMBLIERUNG: U [Bereich] Disassemblieren. 80x86 MODUS: M[Einstellung] Der aktuellen Prozessortyp (zum Zwecke der Assembler und Disassembler Warnungen, siehe oben) kann als etwas anderes vereinbart wer- den, über die folgenden Befehle: m0 Deklariert den aktuellen Typ als 8088 m1 Deklariert als 80186 m2 Deklariert als 286 m3 Deklariert als 386 m4 Deklariert als 486 m5 Deklariert als Pentium m6 Deklariert als Pentium Pro MC Vereinbart die Existenz eines mathematischen Coprozessors. MNC Vereinbart das Fehlen eines mathematischen Coprozessors. MC2 Deklariert den mathematische Coprozessor vom Typ 287 (nur gültig, wenn der aktuellen Prozessor ein 386er ist). M? (nur bei äteren Versionen): Ausgabe des aktuellen Prozessortyps. M Ausgabe des aktuellen Prozessortyps. Programmausführung: GEHE ZU: G [=Adresse] [Haltemarken] Beginnt die Ausführung des geladenen Programmes oder des Maschinencodes an der angegebenen Adresse. Diese wird an dem Haltepunkt unter- brochen, um den Speicher etc. untersuchen zu können. FORTFAHREN: P [=Adresse] [Anzahl] Mit der Ausführung um die Anzahl der gegebenen Schritte weitermachen. REGISTER: R [Register [Wert]] Anzeige alle CPU-Register oder Anzeige/Setzen eines Registers. Akzeptiert 32-Bit-Register- Namen (für CPUs ab 80386). RN Zeigt den FPU Register Status. DEBUG zeigt nur die Roh-Hex-Werte der Register an, während DEBUGX die Werte im Floating-Point-Format an- zeigt. RX Umschalten der Register-Anzeige von 8086 und 80386 (für CPU ab 80386). VERFOLGUNG (TRACE): T [=Adresse] [Anzahl] Verfolgung. TM [0|1] Setzt den Trace-Kommando-Modus, 0=verarbeite INTs (Standard), 1=Einzelschritt INTs(MS-DOS- Debug kompatibeler Modus). I/O Anschlüsse: EINGABE: I port Einlesen von einem Port IW port Einlesen von einem WORT Port ID port Einlesen von einem Doppelwort Port Doppelwort-Werte benötigen eine CPU ab 80386. AUSGABE: O port Wert Schreiben auf einen Port OW port Wert Schreiben auf einen WORT Port OD port Wert Schreiben auf einen Doppelwort Port Doppelwort-Werte benötigen eine CPU ab 80386. Expansionsspeicher(EMS)-Befehle (nur, wenn EMM v4.0 vorhanden ist): XA Nummer Allozieren einer "leeren" EMS-Zugriffsnummer mit Null Seiten. XD Nummer Freigeben der Zugriffsnummer. XM logische-Seite physikalische-Seite Zugriffsnummer Speicher abbilden. XR Nummer Zahl Neuverteilung einer EMS Zugriffsnummer. XS Status anzeigen. X? Zeigt Hilfe zu X-Befehlen.

Kommentar:

DEBUG verwendet hexadezimal (Basis 16). Speicher-Adressen werden in Segment:Offset Form angezeigt, z.B. 0D00:0100. Die letzten vier hexadezimalen Stellen, bestimmen den Abstand im Segment und können von 0000 bis FFFF reichen, was 64 Kilobytes umfasst. Ausführbare Dateien mit der Endung .COM haben alle ihre Daten und Code in einem Segment. Für solche Dateien können Sie in der Regel einfach nur den Offset bei der Angabe von Speicher-Adressen in Debug- Kommandos angeben. Es wird dann vom Programm-Segment ausgegangen. Das gleiche gilt auch für Text-, Binär-Dateien, die kleiner als 64KB sind. Zur Angabe eines Speicherbereiches, trennen sie zwei Adressen mit einem Komma. Das Laden von .HEX-Dateien ist nicht implementiert. Der Assembler und Disassembler unterstützt alle oeffentlich dokumentierten Anweisungen für die Intel-Chips über den Pentium Pro (P6), mit Ausnahme von den MMX-Anweisungen. Diese informieren sie, wenn eine Anweisung nicht für den aktuellen Prozessortyp anwendbar ist. FPU Befehlscodes werden unterstützt.

Beispiel:

Bootsektor (Sektor Nummer 0 mit 512 Bytes=0x200) vom Laufwerk C: (Nummer 2) in Datei BOOT_C.BIN auf erstem Diskettenlaufwerk sichern durch folgende Eingaben: 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 Mit Hilfe von DEBUG im normalen Speicherbereich einer Grafikkarte nach charakteristischen Zeichenfolgen wie Jahreszahlen suchen um die Karte zu identifizieren: 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

Siehe auch:

(emm386) jemm386 jemmex undelete ------------------------------------------------------------------------------ Copyright (C) 2003 Robert Platt, übersetzt 2009 von J. Jenderek. Diese Datei ist abgeleitet vom FreeDOS Spezifikationen-HOWTO. Vgl. auch die Datei H2Cpying bezüglich der Kopierbedingungen.