Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging Lisp代码调试_Debugging_Clojure_Lisp - Fatal编程技术网

Debugging Lisp代码调试

Debugging Lisp代码调试,debugging,clojure,lisp,Debugging,Clojure,Lisp,,我发现了以下评论:传统的Lisp调试实践仍然可以使用 传统的调试实践是什么 通常,什么工具用于调试lisp(带/不带emacs) 基本上就是在运行时添加代码以打印出值,这样您就可以看到发生了什么。在emacs中运行edebug defun,您将看到lisp的魔力。我不知道Bill的具体意思,但IME: 通常,编辑器将有一个正在运行的实例连接到它。您可以立即编译函数以将它们插入到运行的映像中——因为Lisp有自己的编译器,您只需告诉运行的映像读取并编译一小部分文本。或者您可以直接运行函数,查看

,我发现了以下评论:传统的Lisp调试实践仍然可以使用

  • 传统的调试实践是什么
  • 通常,什么工具用于调试lisp(带/不带emacs)

基本上就是在运行时添加代码以打印出值,这样您就可以看到发生了什么。

在emacs中运行edebug defun,您将看到lisp的魔力。

我不知道Bill的具体意思,但IME:

通常,编辑器将有一个正在运行的实例连接到它。您可以立即编译函数以将它们插入到运行的映像中——因为Lisp有自己的编译器,您只需告诉运行的映像读取并编译一小部分文本。或者您可以直接运行函数,查看它们的功能

当抛出一个异常(或者发出一个条件的信号,如果您幸运地使用了带有条件的方言),调试器将向您显示堆栈跟踪,并让您决定如何继续


Lisp与其他高级编译语言之间的主要区别在于,在Lisp中,您基本上总是在编写带有调试程序的代码

由于clojure在问题中被标记,我将给出我们的观点

clojure编译器生成的类文件包含基于行和方法的调试信息,因此任何java调试器都将直接与clojure代码进行互操作,包括断点和对象检查


如果您使用emacs/slime作为开发环境,那么最近已经包括了与slime调试器的集成。由于文档有点稀疏,最好直接查看github上的支持范围。

我称之为“传统的Lisp调试技术集”的方法有:

  • 调试打印输出
  • 函数跟踪(跟踪函数的每次调用) 在返回时,用对应于调用深度的缩进打印 值已打印)
  • 显式调用映像内调试器
  • 由于错误(例如,尝试添加整数和符号)而在图像调试器中结束

听起来像个C#程序员。。(这是一种恭维)@rlb.usa我不知道什么构成了“玩具语言”,但Lisp已经被美国陆军用于几个后勤规划系统,被部署到航天器控制(甚至被远程调试),在几个人工智能和人工智能相关系统中,以及在ITA软件后面,廉价航班的搜索引擎,刚刚被谷歌以7亿美元收购。SLIME是运行在Emacs上的CL的一个非常棒的开发环境。我从来没有使用任何其他的复制为CL。