Neue Features von 4DOS 6.0
März 1998

Batch Debugger

Eigenschaften

Einer der größten Vorteile von 4DOS (4NT, 4OS2, Take Command) ist der gegenüber den Kommando-Interpretern COMMAND.COM oder CDM.EXE der Betriebssysteme von Microsoft und IBM enorm gesteigerte Funktionsumfang. Das ermöglicht Batch-Programme, die einer "richtigen" Programmiersprache fast gleichkommen.

Mit steigender Komplexität der Programme wurde die Forderung nach Debug-Möglichkeiten lauter. Mit den neuen Version hat JP-Software diesen Wunsch nun erfüllt.

Mit dem Debugger können Sie durch ein Batch-Programm Zeile für Zeile "steppen". Dabei wird das Programm während des Debuggens in einem Fenster angezeigt. Sie können die aktuelle Programmzeile ausführen lassen oder überspringen, das Programm abbrechen oder ohne Debugger bis zum Ende ausführen lassen. In einem Extra-Fenster können Sie sich die aktuellen Werte von Variablen und Aliasen anzeigen lassen.

Anwendung

Um ein Batch-Programm zu debuggen, fügen Sie am Anfang der Datei oder des Abschnittes, den Sie untersuchen möchten, das Kommando SETDOS /Y1 ein. An das Ende des Programmes oder des Abschnittes setzen Sie SETDOS /Y0. Sie können den Debugger auch von der Kommandozeile starten, weil jedoch der Debugger am Prompt automatisch abgeschaltet wird, müssen Sie die Kommandos SETDOS und den Batch-Dateinamen in einer Zeile eingeben, zum Beispiel:

C:\4DOS > SETDOS /Y1 ^ STATUS95.BAT
Das dachförmige Zeichen (^ = Caret) in dem Beispiel dient in 4DOS als Trennzeichen zwischen zwei Kommandos. In 4NT und Take Command /32 ist das Trennzeichen ein Ampersand (&).

Nach diesem Kommando startet der Batch-Debugger und zeigt das Programm STATUS95.BAT in einem Fenster. Das Debug-Fenster sieht etwa so aus:

C:\4DOS\STATUS95.BAT [32]
endiff
echo `, der` %_date %@substr[%_time,0,5] Uhr
echo 4DOS Version: %_4ver
echo Betriebssystem: %_dos %_dosver
echos `CPU: `
iff %_cpu == 86 then
  echo ` 8088/8086`
elseiff %_cpu == 186 then
T(race) S(tep) J(ump) X(pand) L(ist) V(ars) A(liases) O(ff) Q(uit)

Am oberen Rand des Fensters ist der Titel des debugten Programmes zu sehen, dahinter in eckigen Klammern die aktuelle Zeile. Diese Zeile wird im darunter angezeigten Listing hervorgehoben. Am unteren Rand des Fensters sehen Sie zur Erinnerung die Kommandos, die möglich sind, während der Debugger läuft:

T(race), RETURN, oder F8 Führt die aktuelle Zeile aus. Wenn hier mit GOSUB oder CALL ein anderer Programmteil oder ein anderes Batch-Programm aufgerufen wird, werden auch diese (Unter-)Programme im Single-Step-Modus im Debugger ausgeführt.
S(tep) oder F10 Führt die aktuelle Zeile aus. Unterprogramme oder andere aufgerufene Batch-Programme werden jedoch nicht im Single-Step-Modus ausgeführt.
J(ump) Überspringt das aktuelle Kommando, ohne es auszuführen, und setzt die Programmausführung mit dem nächsten Kommando fort.
X(pand) Zeigt das nächste auszuführende Kommando an. Alle Variablen und Aliase werden ausgewertet und angezeigt.
L(ist) Fragt nach einem Dateinamen und zeigt dann diese Datei mit dem Kommando LIST an.
V(ariables) Öffnet ein Fenster, in dem die aktuellen Werte der Umgebungsvariablen in alphabetischer Reihenfolge angezeigt werden.
A(liases) Öffnet ein Fenster, in dem die aktuellen Werte aller Aliase in alphabetischer Reihenfolge angezeigt werden.
O(ff) oder ESC Beendet den Debugger und setzt die Ausführung des Batch-Programmes bis zum Ende fort.
Q(uit) Beendet sofort den Debugger und das das Batch-Programm ohne den Rest des Batch-Programmes auszuführen.

Tips

Aber auch ohne den Debugger können Sie mit Hilfe einiger simpler Tricks Fehler in Batch-Programmen aufspüren. Am einfachsten ist es, am Anfang des zu untersuchenden Programmes den Befehl ECHO ON einzufügen. Alternativ können Sie mit dem Befehl SETDOS /V2 ein Echo von Batch-Dateien erzwingen, auch wenn das Echo in den Dateien mit ECHO OFF abgeschaltet wurde. Hierduch wird jede Zeile vor der Ausführung auf dem Bildschirm ausgegeben. Das mag etwas chaotisch aussehen, gibt Ihnen aber einen Eindruck von dem, was in dem Programm passiert.

Ein weiterer wirkungsvoller Trick ist es, eine PAUSE-Anweisung an den zu untersuchenden Stellen einzufügen. Um eine "automatische" Pause zu erzeugen, können Sie das Kommando ON ERRORMSG verwenden. Fügen Sie dazu an den Beginn der zu untersuchenden Datei den folgenden Befehl ein:

ON ERRORMSG PAUSE
Hierdurch wird das Batch-Programm bei einem Fehler zuerst die Fehlermeldung ausgeben und dann anhalten. Wenn Sie im obigen Beispiel die Anweisung PAUSE durch QUIT ersetzen, wird das Programm bei Auftreten eines Fehlers beendet. Sie können dann die Werte von Variablen und Aliasen prüfen.

Extended Directory Search

Eigenschaften

Ohne einen grafischen Dateimanager ist eines der Hauptprobleme bei der Verwendung traditioneller Kommando-Interpreter die Navigation in den Verzeichnissen. Nur mit sehr viel DIR und CD hangelt man sich durch die Unterverzeichnisse und verliert deshalb schnell den Überblick.

Bei JP-Software hat man sich darüber Gedanken gemacht und ist als Lösung auf den "Extended Directory Seach" gekommen.

Mit dieser Technik können Sie die in beliebige Verzeichnisse wechseln, auch wenn Sie Pfad- oder Verzeichnisnamen nur teilweise und unvollständig kennen. Sie geben einfach den bekannten Teilstring nach einem CD oder CDD am Prompt ein. Sie können auch den sog. "Automatischen Verzeichniswechsel" benutzen. Hierbei geben Sie nach dem Verzeichnisnamen nur einen Backslash ein und drücken dann RETURN.

4DOS durchsucht die "Extended Search Database" und bringt Sie direkt zu dem Laufwerk und Verzeichnis, wenn eine Übereinstimmung gefunden wurde. Wenn es mehrere Übereinstimmungen gibt, präsentiert 4DOS Ihnen ein Auswahlfenster aus dem Sie Ihr Zielverzeichnis wählen können. Wenn keine Übereinstimmung gefunden wurde erscheint eine Fehlermeldung.

Anwendung

Zuerst müssen Sie die "Extended Search Database" erzeugen, um diese Technik des Verzeichniswechsels benutzen zu können. Dazu geben Sie am Prompt ein:

C:\ > CDD /S
Indexing drive C:
Indexing drive D:
4DOS durchsucht alle Laufwerke und legt die Datenbasis an. Sie befindet sich im Hauptverzeichnis von C: und ist eine Datei mit dem Namen JPSTREE.IDX . In dieser Datei stehen die Namen aller Verzeichnisse auf allen Laufwerken.

Als nächstes geben Sie das Kommando OPTION ein. In dem Dialogfenster wählen Sie den Menüpunkt "Configure/Command Line 2". Wählen Sie in der Box "Extended Directory Search" den Searchlevel 1, 2 oder 3. Verlassen Sie Programm mit "Exit/Use".

Sie können die Einstellungen dauerhaft in der 4DOS.INI speichern, wenn Sie statt USE beim Verlassen den Befehl SAVE wählen. Dadurch wird in dir 4DOS.INI die Option "FuzzyCD=n" eingefügt. Für "n" können hier die Werte 0, 1, 2 oder 3 stehen. Die Werte haben folgende Bedeutung:

FuzzyCD = 0 "Extended Directory Search" ist abgeschaltet. Die Datenbasis JPSTREE wird ignoriert. "Automatischer Verzeichniswechsel" funktioniert, jedoch müssen Pfade explizit angegeben werden.
FuzzyCD = 1 "Extended Directory Search" ist eingeschaltet. Die gesuchten Verzeichnisnamen müssen exakt mit den Zielverzeichnisnamen übereinstimmen.
FuzzyCD = 2 "Extended Directory Search" ist eingeschaltet. Die gesuchten Verzeichnisnamen müssen exakt (wie bei FuzzyCD =1) oder mit dem Anfangsteil mit den Zielverzeichnisnamen übereinstimmen.
FuzzyCD = 3 "Extended Directory Search" ist eingeschaltet. Die gesuchten Verzeichnisnamen müssen exact (wie bei FuzzyCD = 1) übereinstimmen oder den Suchstring im Zielverzeichnisnamen enthalten.

Tips

Diese Art der Verzeichnisnavigation funktioniert mit den Befehlen CD, CDD, PUSHD und den "Automatischen Verzeichniswechseln".

Zur Rückkehr zu einem vorherigen Verzeichnis können Sie die Befehle CD -, CDD - und POPD benutzen. Außerdem steht die Technik des "Directory History Window" zur Verfügung. Mit dieser können Sie Ihr Zielverzeichnis aus der Liste der bisher besuchten Verzeichnisse auswählen.

Zurück zur "Einführung in 4DOS"

Günther Schättiger
März 1998
email: schaetti@informatik.uni-hamburg.de