During web searching,我发现了以下注释:仍然可以使用传统的Lisp调试实践。
答案 0 :(得分:4)
我不知道比尔的意思,但IME:
通常,您的编辑器将连接一个正在运行的实例。你可以立即编译函数将它们插入到运行的映像中 - 因为Lisp有自己的编译器,你只是告诉正在运行的映像来读取和编译一小段文本。或者你可以直接运行函数,看看他们做了什么。
当抛出异常时(或者发出条件信号,如果你有幸遇到有条件的方言),调试器会显示堆栈跟踪并让你决定如何继续。
Lisp和其他高级编译语言之间的主要区别在于,在Lisp中,您基本上总是在附加调试器的情况下编写代码。
答案 1 :(得分:4)
由于在问题中标记了clojure,我将给出我们的观点。
clojure编译器生成的类文件包括基于行和基于方法的调试信息,因此任何java调试器都可以直接与clojure代码进行互操作,包括断点和对象检查。
如果您使用emacs / slime作为开发环境,那么最近已经包含了与slime的调试器的集成。由于文档有点稀疏,最好直接查看github上的支持范围。
答案 2 :(得分:3)
在emacs中运行edebug-defun,你会发现lisp是神奇的。
答案 3 :(得分:2)
在我称之为“传统的Lisp调试技术”的内容中:
答案 4 :(得分:0)
基本上就是添加代码以便在运行时打印出值,这样你就可以看到发生了什么。