1

在 ABCL 中,在开发过程中,我有时会遇到失控的函数。我希望能够停止执行并返回顶级 LISP,而不会杀死 LISP/JVM 进程(在我的 emacs shell 中)并丢失我当前的 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

4

1 回答 1

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 协议连接到它。slimeabcl.sh

于 2019-06-06T16:18:12.207 回答