首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >球拍:缺少来自Emacs和Geiser的调试消息

球拍:缺少来自Emacs和Geiser的调试消息
EN

Stack Overflow用户
提问于 2014-06-02 06:27:51
回答 1查看 293关注 0票数 2

我是个新手,不会用emacs和盖泽。目前,我对它的正常操作没有任何问题,比如编译程序或启动REPL。但是我不知道为什么如果我的程序出错,Geiser中的REPL只提供非常有限的信息。

例如,我使用了一个可变列表,但意外地使用了assoc而不是massoc,来自Geiser中的REPL的错误消息是

代码语言:javascript
复制
install-deriv-package: undefined;
cannot reference undefined identifier
  context...:
   /Applications/Racket v6.0.1/collects/racket/private/misc.rkt:87:7

但是,在DrRacket的REPL中,错误消息会更有启发性:

代码语言:javascript
复制
assoc: not a proper list: (mcons (mcons 'deriv (mcons (mcons '** #<procedure:deriv-
exponential>) (mcons (mcons '* #<procedure:deriv-product>) (mcons (mcons '+ #
<procedure:deriv-sum>) '())))) '())

对于前一种情况,我甚至不知道错误在哪里。

是否与Geiser的配置相关?如果是这样,如何使错误消息类似于DrRacket中的错误消息?

EN

回答 1

Stack Overflow用户

发布于 2016-05-10 12:39:58

如果我错了,请纠正我,但您的特定问题似乎是install-deriv-package在您的Geiser环境中未定义的问题,但不是在您的DrRacket环境中未定义的问题。无论如何,在我看来,在Geiser REPL、geiser-compile-file输出和DrRacket输出中生成的消息非常相似(至少在可变列表上使用assoc而不是massoc的情况下是这样):

Geiser REPL错误:

代码语言:javascript
复制
racket@> (assoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
assoc: not a proper list: (mcons (mcons 1 (mcons 2)) (mcons (mcons 3 (mcons 4)) (mcons (mcons 5 (mcons 6)))))
  context...:
   /Applications/Racket v6.5/collects/racket/private/misc.rkt:87:7

Geiser REPL w/out错误:

代码语言:javascript
复制
racket@> (massoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
(mcons 3 (mcons 4 '()))

geiser-compile-file错误:

代码语言:javascript
复制
Compiling ~/development/lisp/racket/error_testing.rkt ...


Error: struct:exn:fail:contract <- THIS TEXT IS ACTUALLY LINKED TO THE GEISER DOCS PAGE

assoc: not a proper list: (mcons (mcons 1 (mcons 2)) (mcons (mcons 3 (mcons 4)) (mcons (mcons 5 (mcons 6)))))

geiser-compile-file w/out错误:

代码语言:javascript
复制
Compiling ~/development/lisp/racket/error_testing.rkt ...


(mcons 3 (mcons 4 '()))

DrRacket错误:

代码语言:javascript
复制
(assoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
. . assoc: not a proper list: (mcons (mcons 1 (mcons 2 '())) (mcons (mcons 3 (mcons 4 '())) (mcons (mcons 5 (mcons 6 '())) '())))

DrRacket w/out错误:

代码语言:javascript
复制
(mcons 3 (mcons 4 '()))

正如您所看到的,所有这些输出看起来都非常相似。然而,为了回答你的问题,我认为geiser-compile-file是这里使用的最好的Geiser选项,因为它提供的关于错误的信息比Geiser REPL输出稍微多一点。此外,geiser-compile-file缓冲区缺省为geiser-debug-mode,因此这可能在一定程度上有助于调试。最后,您可能还想查看this section on the Geiser site.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23985165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档