Nächste: Funktionen und Variablen der Laufzeitumgebung, Vorige: Initialisierung von Maxima, Nach oben: Laufzeitumgebung [Inhalt][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)
Nächste: Funktionen und Variablen der Laufzeitumgebung, Vorige: Initialisierung von Maxima, Nach oben: Laufzeitumgebung [Inhalt][Index]