В ABCL, как мне выйти из убегающей функции, не убивая LISP? - PullRequest
1 голос
/ 01 июня 2019

В 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))))</p> <p>C-c C-cTerminate batch job (Y/N)? n n</p> <p>Process inferior-lisp exited abnormally with code 130

1 Ответ

0 голосов
/ 06 июня 2019

Попробуйте вместо этого использовать 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 вы сможете запустить его.

Do C-u M-x slime , чтобы заставить команду slime запросить исполняемый файл и дать ему abcl.sh. Он должен запустить процесс и подключиться к нему по протоколу Slime.

...