lisp - 在 ABCL 中,如何在不终止 LISP 的情况下摆脱失控的功能?

标签 lisp common-lisp break control-c abcl

在 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))))

<p>C-c C-cTerminate batch job (Y/N)? n n</p>

Process inferior-lisp exited abnormally with code 130

最佳答案

尝试将 Emacs 与 Slime 结合使用,因为如果您按 C-c C-c,Slime 不会终止进程但会中断线程并进入调试器。

您可能应该在您的 PATH 某处添加一个可执行脚本 abcl.sh,如下所示:

#!/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 协议(protocol)连接到它。

关于lisp - 在 ABCL 中,如何在不终止 LISP 的情况下摆脱失控的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408489/

相关文章:

list - 如何将空列表作为列表的元素返回

c - 为什么我收到错误 "Break statement not within loop or or switch."?

lisp - 如何在普通的 lisp 中获取 64 位整数?

common-lisp - Wookie Common Lisp 服务器是否并行处理请求?

lisp - 首先从 LISP 中的列表中排序原子,然后排序子列表

lisp - 为什么函数应用会提示长列表?

c++ - 为什么我的 switch 语句不能在我的 C++ 程序中正确输出星号?

java - 为什么这个break语句没有按预期工作?

python - 将 Lisp 输入解析为 python 时出现问题

lisp - 使用带有 Common Lisp 的排序的意外列表重复