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