Tag Archives: swank

在Common Lisp中远程调试服务器上正在运行的程序

Common Lisp开发中一个狠锋利的特性就是他的动态性,以及全程的可用性。体现的狠明显的一点是:一个lisp程序在运行中,也可以狠方便的连接上进行调试和升级,而不需要暂停服务。 也就是具有“热升级”的能力。 要实现这个功能,就要靠SLIME + Emacs 这对黄金搭档了。 废话不多说,直接看看它在实际使用中是什么样子的: 1. 服务器(当然是 Unix 系的),上面运行Common Lisp的程序,在程序中启动一个 swank 服务器。swank就是slime的服务端。比如一个项目的启动脚本如下: 2. 你本地的客户端, Emacs + slime 插件 3. ssh管道。 由于swank的服务器绑定的是localhost,因此不能直接远程连接,通过创建一个ssh管道将服务器上的端口绑定到本机:   一个典型的远程调试的使用方法: 在Emacs中,打开slime,执行: 下面就可以打开一个Lisp 文件,进行调试了。这个时候,我们可以根据需要,打开一个本地的文件作为 patch ,也可以在emacs中通过 TRAMP远程编辑服务器上的源代码。在我们编辑或者增加一个函数后,通过 Ctrl-c-c 就可以Eval 一段新的函数定义。然后,我们的服务程序就被hot-update 了。 通过 slime-inspect 远程连接到这个swank服务器,查看各种变量的情况。 M-x … Continue reading

Posted in LISP | Tagged , , , | 5 Comments