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:
  1. Sie legen einen oder mehrere Haltepunkte an. Wenn die Befehlsabarbeitung auf einen solchen Haltepunkt stößt, wird angehalten.
  2. 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.

3. Haltepunkte

Ü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.