Next: Funktionen und Variablen der Laufzeitumgebung, Previous: Initialisierung von Maxima, Up: Laufzeitumgebung [Contents][Index]
Eine Berechnung kann mit dem Kommando ^c (control-c) abgebrochen werden. Standardmäßig kehrt Maxima zu der Eingabeaufforderung der Konsole zurück. In diesem Fall ist es nicht möglich, die Berechnung fortzusetzen.
Beispiel:
Eine lange Rechnung wird mit ^c abgebrochen. Maxima kehrt zur Eingabeaufforderung zurück.
(%i1) factor(factorial(10000))$ Maxima encountered a Lisp error: Interactive interrupt at #x9224192. Automatically continuing. To enable the Lisp debugger set *debugger-hook* to nil. (%i2)
Wird die Lisp-Variable *debugger-hook* mit dem Kommando
:lisp (setq *debugger-hook* nil) auf den Wert nil gesetzt, dann
startet Maxima den Lisp-Debugger, wenn das Kommando ^c ausgeführt wird.
Mit dem Kommando continue im Lisp-Debugger kann die unterbrochene
Berechnung fortgesetzt werden.
Beispiel:
Die Variable *debugger-hook* wird auf den Wert nil gesetzt.
Der Abbruch der Rechnung startet in diesem Fall den Lisp-Debugger. Die
Rechnung kann mit der Auswahl 0 für das Kommando continue
fortgesetzt werden.
(%i2) :lisp (setq *debugger-hook* nil)
NIL
(%i2) factor(factorial(10000))$
debugger invoked on a SB-SYS:INTERACTIVE-INTERRUPT
in thread #<THREAD
"initial thread" RUNNING
{C597F49}>:
Interactive interrupt at #x9224192.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE ] Return from SB-UNIX:SIGINT.
1: [MACSYMA-QUIT] Maxima top-level
2: [ABORT ] Exit debugger, returning to top level.
(SB-BIGNUM:BIGNUM-TRUNCATE #<unavailable argument>
#<unavailable argument>)
0] 0
(%i3)
Hinweis:
Mit dem Kommando :lisp (setq *debugger-hook* 'maxima-lisp-debugger) kann
das Standardverhalten von Maxima wiederhergestellt werden.
In Unix-Systemen kann die Ausführung auch mit Kommando ^z
(control-z) abgebrochen werden. In diesem Fall wird eine Unix-Shell
gestartet. Das Kommando fg kehrt zu Maxima zurück.
Wie mit dem Kommando ^c kann auch ein Lisp-Fehler zu einem Abbruch
der Berechnung führen. Maxima meldet den Lisp-Fehler und kehrt
standardmäßig zu der Eingabeaufforderung zurück. Wurde die
Lisp-Variable *debugger-hook* auf den Wert nil gesetzt, startet
Maxima den Lisp-Debugger.
Beispiel:
Es wird eine Lisp-Funktion $sqr definiert, die aus Maxima mit sqr
aufgerufen werden kann und ihr Argument quadriert. Wird die Funktion mit mehr
als einem Argument aufgerufen, wird ein Lisp-Fehler generiert und Maxima
kehrt zu der Eingabeaufforderung zurück.
(%i1) :lisp (defun $sqr (x) (* x x)) $SQR (%i1) sqr(3); (%o1) 9 (%i2) sqr(2,3); Maxima encountered a Lisp error: invalid number of arguments: 2 Automatically continuing. To enable the Lisp debugger set *debugger-hook* to nil. (%i3)
Jetzt wird die Lisp-Variable *debugger-hook* auf den Wert nil
gesetzt. In diesem Fall wird der Lisp-Debugger aufgerufen. Die Ausführung
kann in diesem Fall nicht mit dem Kommando continue fortgesetzt werden,
da ein Syntax-Fehler aufgetreten ist. Jedoch ist es möglich, Maxima mit dem
Kommando (run) vom Lisp-Prompt neu zu starten.
(%i3) :lisp (setq *debugger-hook* nil)
NIL
(%i3) sqr(2,3);
debugger invoked on a SB-INT:
SIMPLE-PROGRAM-ERROR in thread #<THREAD
"initial thread" RUNNING {C597F49}>:
invalid number of arguments: 2
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [MACSYMA-QUIT] Maxima top-level
1: [CONTINUE ] Ignore runtime option --eval "(cl-user::run)".
2: [ABORT ] Skip rest of --eval and --load options.
3: Skip to toplevel READ/EVAL/PRINT loop.
4: [QUIT ] Quit SBCL (calling #'QUIT, killing the process).
($SQR 2)[:EXTERNAL]
0] continue
* (run)
Maxima restarted.
(%i4)
Next: Funktionen und Variablen der Laufzeitumgebung, Previous: Initialisierung von Maxima, Up: Laufzeitumgebung [Contents][Index]