我想在Emacs和SLIME下的Common Lisp中进行一些OpenGL编程。我没有参与其中,但我目前正在尝试使用SBCL。如果我从一开始就打开emacs,只用这一行创建一个新文件:
(ql:quickload :cl-opengl)
然后我做 Mx slime (并等待它加载),接着是 Cc Cc 来编译并运行该行,SBCL每次都会立即崩溃,提示出一个显示sbcl quit unexpectedly
的对话框:
我已点击“报告...”按钮保存了可访问的输出;如果那是有用的,我可以在这里添加(或将其放在pastebin或其他东西上)......简短的版本就是获得SIGTRAP
。
每当我尝试在SLIME下运行时都会发生这种情况......但是,有趣的是,如果我从命令行运行SBCL,就不会发生这种情况。
所以,问题是:这是SBCL中的错误吗?在cl-opengl?我错误配置的东西?其他?任何见解将不胜感激。
注意 :
我已经完成了一些谷歌搜索,我发现a page提供了一个解决方法,将以下内容放入~/.swank.lisp
:
(setf swank:*communication-style* :fd-handler)
确实,这让我超越了直接的崩溃,让我能够做一些工作。如果这只是答案,有人请将其作为答案发布,并解释为什么要这样做,以便其他人可以找到它。否则,我想象这是一个错误,但是,这可能是固定的,而不是解决...和/或至少我可以帮助更好地理解的东西;我的当前代码(基本上在brian's brain,作为测试用例)运行(通过run
)仍然没有响应式REPL,这可能是也可能不是一个单独的问题?改变swank配置改变了我的情况吗?
平台详细信息:
操作系统: MacOS 10.6.8
来自MacPorts的SBCL: sbcl@1.1.10_0+fancy ;启动标题这是SBCL 1.1.10,ANSI Common Lisp的实现。
Emacs:安装了macports的Emacs 版本24.3(9.0)(根据窗口的GUI,或 GNU Emacs 24.3.1(x86_64-apple-darwin10.8.0,NS apple-appkit) 2013-04-07的-1038.36)每 Mx版或 emacs-app@24.3_1 端口)
史密斯:来自MacPorts的史莱姆@ 20130630
答案 0 :(得分:0)
:fd-handler选项改变了SWANK与默认通信的方式,即使用单独的线程进行通信,以及使用循环方法(http://www.common-lisp.net/projects/slime/doc/html/Communication-style.html)。
过去有很多关于在Mac OS上使用SBCL和线程的投诉,这些很大程度上取决于它的外观;也许SWANK有类似的问题?
我不是百分百肯定这是你问题的唯一原因,但这是我能找到的最佳解释。
答案 1 :(得分:0)
我一直在查看我的设置以查看不同的内容
OS X 10.9
SBCL 1.1.8.0-19cda10
slime-20131003
但最可能的罪犯仍然是粘糊糊的。 我真的建议使用quicklisp来管理你的粘液设置,而不是macports,这将保持粘液和swank同步和最新。我一直在用这种方式使用粘液一两年,到目前为止没有问题。
要安装和配置SLIME,请使用:
(ql:quickload "quicklisp-slime-helper")
然后按照显示的说明进行操作。 quicklisp-slime-helper会 创建一个可以在Emacs中加载的文件来配置正确的文件 加载Quicklisp的SLIME安装的加载路径
我还制作了一个小视频,展示如何在Windows下install emacs+sbcl+quicklisp+slime。粘液部分仍然适用于所有平台。
希望它有所帮助。