В ABCL, как мне выйти из убегающей функции, не убивая LISP?
В ABCL во время разработки я иногда получаю убегающие функции. Я хочу иметь возможность остановить выполнение и вернуться к LISP верхнего уровня, не убивая процесс LISP/JVM (в моей оболочке emacs) и не теряя мою текущую среду LISP.
Я пробовал различные управляющие клавиши (например, Control-C, Control-D,...), но в лучшем случае убивал LISP или JVM.
;;; How to stop this function and return to LISP interactive
;;; without killing lisp...?
(defun runaway ()
(let ((result nil))
(dotimes (count 10 result)
(sleep 2)
(print count))))
C-c C-cTerminate batch job (Y/N)? n n
Process inferior-lisp exited abnormally with code 130
0 ответов
Попробуйте вместо этого использовать Emacs со Slime, потому что Slime не убивает процесс, а прерывает поток и входит в отладчик, если вы нажмете C-c C-c.
Вероятно, вам следует добавить исполняемый скрипт abcl.sh
где-нибудь в вашем PATH, как показано ниже:
#!/bin/sh
exec java -jar .../abcl/abcl-bin-1.5.0/abcl.jar
Вы должны заменить ...
своим собственным путем к abcl.jar
.
Затем вы сможете запустить его из Emacs.
Сделать, C-u M-x slime чтобы заставитьslime
команда для запроса исполняемого файла и дать abcl.sh
к нему. Он должен запустить процесс и подключиться к нему по протоколу Slime.