Nächste: Debugger-Kommandos, Nach oben: Fehlersuche [Inhalt][Index]
Maxima hat einen Quellcode-Debugger. Es können Unterbrechungspunkte gesetzt werden, um die Ausführung einer Funktion abzubrechen und um schrittweise die Funktion zu testen. Der Stapelspeicher und Variable können untersucht werden.
Das Kommando :help
oder :h
zeigt eine Liste mit den
Debugger-Kommandos. Innerhalb des Debuggers können alle Maxima-Funktionen
genutzt werden, um Variablen und Ausdrücke auszugeben, zu definieren oder
anderweitig zu manipulieren.
Eine Unterbrechnung wird mit dem Kommando :br
gesetzt. Mit dem Kommando
:n
oder :next
wird die nächste Programmzeile ausgeführt. Das
Kommando :bt
oder :backtrace
zeigt eine Liste der Stack Frames.
Mit dem Kommando :r
oder :resume
wird der Debugger verlassen.
Beispiele:
(%i1) load ("/tmp/foobar.mac"); (%o1) /tmp/foobar.mac (%i2) :br foo Turning on debugging debugmode(true) Bkpt 0 for foo (in /tmp/foobar.mac line 1) (%i2) bar (2,3); Bkpt 0:(foobar.mac 1) /tmp/foobar.mac:1:: (dbm:1) :bt <-- :bt typed here gives a backtrace #0: foo(y=5)(foobar.mac line 1) #1: bar(x=2,y=3)(foobar.mac line 9) (dbm:1) :n <-- Here type :n to advance line (foobar.mac 2) /tmp/foobar.mac:2:: (dbm:1) :n <-- Here type :n to advance line (foobar.mac 3) /tmp/foobar.mac:3:: (dbm:1) u; <-- Investigate value of u 28 (dbm:1) u: 33; <-- Change u to be 33 33 (dbm:1) :r <-- Type :r to resume the computation (%o2) 1094
Die im obigen Beispiel geladene Datei /tmp/foobar.mac
hat den folgenden
Inhalt:
foo(y) := block ([u:y^2], u: u+3, u: u^2, u); bar(x,y) := ( x: x+2, y: y+2, x: foo(y), x+y);
Wird Maxima unter GNU Emacs in einer Shell ausgeführt oder wird die Nutzeroberfläche Xmaxima verwendet, dann wird in einem zweiten Ausgabefenster die Position einer Unterbrechung im Quellcode angezeigt. Mit dem Emacs-Kommando M-n kann dann schrittweise die Funktion ausgeführt werden.
Um diese Funktionalität zu nutzen, sollte Emacs in einer dbl
-Shell
ausgeführt werden. Dazu benötigt Emacs die Datei dbl.el
im elisp
Verzeichnis. Dazu müssen die elisp-Dateien installiert oder das Maxima
elisp Verzeichnis bekannt sein. Dazu können die folgenden Kommandos der
Datei .emacs hinzugefügt werden:
(setq load-path (cons "/usr/share/maxima/5.9.1/emacs" load-path)) (autoload 'dbl "dbl")
Mit dem Emacs-Kommando M-x dbl wird eine Shell gestartet, in der Programme wie Maxima, gcl, gdb u. a. ausgeführt werden können. In dieser Shell kann auch der Maxima-Debugger ausgeführt werden.
The user may set a break point at a certain line of the file by typing
C-x space
. This figures out which function the cursor is in, and then
it sees which line of that function the cursor is on. If the cursor is on,
say, line 2 of foo
, then it will insert in the other window the
command, “:br foo 2
”, to break foo
at its second line. To
have this enabled, the user must have maxima-mode.el turned on in the window
in which the file foobar.mac
is visiting. There are additional
commands available in that file window, such as evaluating the function into
the Maxima, by typing Alt-Control-x
.
Nächste: Debugger-Kommandos, Nach oben: Fehlersuche [Inhalt][Index]