В 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.

Другие вопросы по тегам