как выключить отладчик в sbcl

Я пытаюсь изучить язык Common LISP в настоящее время, и я использовал sbcl (я надеюсь, что это - достойный выбор реализации.)

При прибытии из рубина и irb я нахожу автоматическое перемещенным в отладчик на каждой ошибке немного раздражения в это время. Есть ли способ выключить его временно, когда я играю вокруг.

10
задан Rainer Joswig 12 June 2015 в 20:06
поделиться

2 ответа

Common Lisp имеет переменную * debugger-hook * , которую можно связать / установить с функцией.

* (aref "123" 10)

debugger invoked on a SB-INT:INVALID-ARRAY-INDEX-ERROR:
  Index 10 out of bounds for (SIMPLE-ARRAY CHARACTER
                              (3)), should be nonnegative and <3.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-INT:INVALID-ARRAY-INDEX-ERROR "123" 10 3 NIL)
0] 0

* (defun debug-ignore (c h) (declare (ignore h)) (print c) (abort))

DEBUG-IGNORE
* (setf *debugger-hook* #'debug-ignore)

#<FUNCTION DEBUG-IGNORE>
* (aref "123" 10)

#<SB-INT:INVALID-ARRAY-INDEX-ERROR {1002A661D1}>
* 
12
ответ дан 3 December 2019 в 18:31
поделиться

Имеется параметр командной строки - disable-debugger , например: [

$ sbcl --disable-debugger

] На странице руководства:

По умолчанию, когда SBCL обнаруживает ошибка, он входит во встроенную отладчик, позволяющий интерактивно диагноз и возможное заступничество. Эта опция отключает отладчик, вызывая ошибки, чтобы распечатать обратную трассировку и выйдите вместо этого со статусом 1 - какой режим работы лучше подходит для пакетной обработки. Увидеть Руководство пользователя SB-EXT: ОТКЛЮЧЕНИЕ-ОТЛАДКА для подробностей.

Есть также параметры - noinform и - noprint CL, которые могут оказаться полезными.

9
ответ дан 3 December 2019 в 18:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: