Weiter Zurück Inhalt

4. Sonstiges

4.1 Der Debugger

Seit der Version 0.9-15 verfügt LPU über einen einfachen Debugger. Er dient der Fehlersuche in LPU-Programmen und - zumindest vorerst - auch in LPU selbst.

Der Debugger kann an jeder beliebigen Stelle innerhalb eines LPU-Programms aufgerufen werden. Dies geschieht durch Einfügen der Anweisung `.stop'. Zusätzlich kann - beginnend mit Version 0.9-23 - der Debugger durch drücken von `CTRL-C' bei laufendem LPU-Programm aufgerufen werden.

Von diesem Moment an wird vor der Ausführung einer jeden LPU-Anweisung die Anweisung selbst, und ein Prompt ausgegeben. Anschließend wird eine Eingabe erwartet, die mit ENTER abgeschlossen werden muß. Diese Eingabe wird als Debugger-Anweisung interpretiert und ausgeführt.

Folgende Debugger-Anweisungen sind derzeit definiert:

?

Es wird eine Liste aller erlaubten Debugger-Anweisungen ausgegeben.

a VAR = EXPR

Berechnet den Ausdruck EXPR und weist das Ergebnis der Variablen VAR zu.

c

Gibt den aktuellen Aufrufstack aus.

e EXPR

Berechnet den Ausdruck EXPR und zeigt das Ergebnis an.

g

Go. Die normale Programmausfuehrung wird wieder aufgenommen, d.h., der Debugger wird ausgeschaltet.

q

Quit. Verläßt LPU.

w

EXPR { , EXPR }

Watch. Definiert eine Liste von Überwachungs-Anweisungen. Näheres siehe beim Befehle `.watch'.

ENTER

Die Leereingabe führt die nächste LPU-Anweisung aus, und geht anschließend für die nächste Anweisung wiederum in den Debugger.

Die LPU-Anweisung `.cont' schaltet ebenfalls wieder in den normalen Betriebsmodus, und beendet damit den Debug-Modus.

4.2 Tracing

Der oben beschriebene Debugger ist zwar recht gut geeignet, um einen konkreten Fehlerfall zu untersuchen, es ist jedoch recht mühsam, sich im Einzelschritt über eine evtl. recht lange Anweisungsfolge bis zur eigentlichen Fehlerstelle durchzusteppen.

Genau diesem Zweck dienen die Trace-Ausgaben. Sie werden mit `.tron' ein- und mit `.troff' ausgeschaltet.

Ist das Tracing aktiviert, so werden alle Anweisungen, die ausgeführt werden, zuvor nach STDERR ausgegeben. Ist eine sog. `Watchlist' definiert (durch das Debugger-Kommando `w' oder den LPU-Befehl `.watch'), so werden hier auch die entsprechenden Ausdrücke berechnet und ausgegeben. Dadurch kann man die Stelle, an der ein Fehlverhalten auftritt, meist sehr schnell einkreisen. Anschließend kann man dann z.B. unmittelbar vor der kritischen Stelle ein `.stop' einfügen, und die Stelle mit dem Debugger näher untersuchen.

Auch die Anweisung `.debug' kann in diesem Zusammenhang hilfreich sein.


Weiter Zurück Inhalt