Debugger
Der Debugger dient dazu, die Programmausführung
an beliebiger Stelle anzuhalten,
einzelne Befehle im Schrittbetrieb abzuarbeiten
und so das Geschehen im Emulator zu überwachen.
Dabei ist es auch möglich,
die Speicher- und Registerinhalte anzusehen.
1. Debugger starten
Sie befinden sich im J1013 Hauptfenster und klicken im Menü
Extra, Untermenü Werkzeuge, den Punkt
Debugger... an.
Die weitere Beschreibung bezieht sich auf das Debugger-Fenster.
2. Programmausführung anhalten
Damit Sie die Speicher- und Registerinhalte ansehen können,
muss die Programmausführung angehalten werden.
Dafür gibt es zwei Möglichkeiten:
-
Sie legen einen oder mehrere Haltepunkte an.
Wenn die Befehlsabarbeitung auf einen solchen Haltepunkt
stößt, wird angehalten.
-
Sie klicken im Menü Debuggen auf den Punkt
Programmausführung anhalten.
Wenn Sie die Monitorprogrammemulation aktiviert haben
und die Programmausführung befindet sich gerade darin
(z.B. wenn auf das Drücken einer Taste gewartet wird),
erscheint in der Statuszeile die Ausschrift
"Programmausführung wird angehalten...".
Sobald die Monitorprogrammemulation verlassen wird,
stoppt der Debugger.
Jedesmal wenn die Programmausführung anhält,
wird der Inhalt des Debugger-Fensters aktualisiert, d.h.,
Sie sehen im linken Bereich des Fensters die Registerinhalte,
in der Mitte die ersten Bytes der Speicherbereiche,
auf denen die Doppelregister zeigen und
unten die nächsten auszuführenden Befehle.
Über das Menü Debuggen,
Eintrag Haltepunkt hinzufügen...,
können Sie beliebig viele Haltepunkte anlegen.
Dazu müssen Sie die Haltepunktadressen hexadezimal angeben.
Der Debugger ist nur solange aktiv, wie das Debugger-Fenster
sichtbar ist.
Wenn Sie Haltepunkte angelegt haben und Sie schließen
das Fenster, werden die Haltepunkte zwar nicht gelöscht,
jedoch wird dann dort auch nicht mehr angehalten.
Um einen Haltepunkt wieder zu entfernen,
müssen Sie diesen im rechten Bereich des Debugger-Fensters
durch Anklicken markieren.
Anschließend klicken Sie im Menü Debuggen
auf den Eintrag Haltepunkt entfernen.
Optional können Sie auch alle Haltepunkte auf einmal entfernen
(Menüeintrag Alle Haltepunkte entfernen).
4. Schrittbetrieb
Mit Schrittbetrieb ist gemeint, dass nach dem Anhalten der
Programmausführung einzelne Befehle oder Befehlsgruppen
abgearbeitet werden und danach automatisch wieder
die Programmausführung angehalten wird.
Die Funktionalitäten des Schrittbetriebs finden Sie im Menü
Debuggen unter den Punkten Über Aufruf springen,
In Aufruf springen und Aus Aufruf herausspringen.
Den Schrittbetrieb beenden Sie ganz einfach durch Fortsetzung
der Programmausführung.
Klicken Sie dazu im Menü Debuggen den Punkt
Bis Haltepunkt ausführen an.
Wenn Sie sich im Schrittbetrieb befinden und Sie schließen
des Debugger-Fenster, geht der Emulator in den
Pause-Zustand über.
Sie können dann im J1013 Hauptfenster im Menü
Extra auf Fortsetzen klicken,
oder Sie öffnen wieder den Debugger.
4.1. Über Aufruf springen
Es wird ein einzelner Maschinenbefehl abgearbeitet.
Handelt es sich dabei um den Aufruf eines Unterprogramms,
so wird das ganze Unterprogramm ausgeführt und
erst danach wieder angehalten.
4.2. In Aufruf springen
Es wird immer nur ein einzelner Maschinenbefehl abgearbeitet.
Handelt es sich um den Aufruf eines Unterprogramms,
so wird vor dem ersten Maschinenbefehl des Unterprogramms
wieder angehalten.
4.3. Aus Aufruf herausspringen
Es werden die Maschinenbefehle bis zum nächsten Return-Befehl
ausgeführt.
Werden dabei Unterprogramme aufgerufen,
so werden diese vollständig ausgeführt.
4.4. Registerinhalte und Flags ändern
Im Schrittbetrieb, d.h. wenn die Programmausführung angehalten
wurde, können die Inhalte der Register geändert werden.
Geben Sie dazu den gewünschten neuen Wert in das jeweilige Feld
hexadezimal ein.
Die Werte der einzelnen Flags können Sie festlegen,
indem Sie auf die entsprechenden Boxen im oberen Bereich des Fensters
klicken und so ein Häkchen setzen oder entfernen.
5. Befehle aufzeichnen
Eine weitere Möglichkeit der Verfolgung des Geschehens
im Emulator ist die Befehlsaufzeichnung.
Dabei werden vor der Abarbeitung eines jeden Maschinenbefehls
die Adresse, die Inhalte der wichtigsten Register und der
anstehende Maschinenbefehl in Form einer Zeile in
eine Textdatei geschrieben.
Diese können Sie sich dann mit einem Editor ansehen,
z.B. mit dem im J1013 eingebauten
Texteditor.
Die Befehlsaufzeichnung schalten Sie über den Schalter
Befehle aufzeichnen im Menü Debuggen
ein und wieder aus.
Immer wenn Sie die Befehlsaufzeichnung einschalten,
werden Sie nach dem Namen der Datei gefragt,
in der die Befehle aufgezeichnet werden sollen.
Achtung! Die Befehlsaufzeichnung schreibt pro Maschinenbefehl
eine ganze Zeile in eine Textdatei.
Diese Textdatei wächst deshalb sehr schnell und sehr stark an.
Sie sollten deshalb die Befehlsaufzeichnung nicht zu lange
eingeschaltet lassen und sicherstellen, dass auf dem Speichermedium
ausreichend Platz ist.
Außerdem wird die Programmausführung in Abhängigkeit
von der Schreibgeschwindigkeit des Speichermediums deutlich gebremst.