作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有带 swank 1.4 插件的 lein 1.7。然后,我从没有 emacs 配置开始,从 marmalade 安装 clojure-mode,用 lein 创建一个新项目,打开 project.clj,然后执行 M-x clojure-jack-in。史莱姆开始就好了。然后我输入这个
; SLIME 20100404
user> (defn x[x]
(let [y (* x 2)]
(when (= y 2)
(throw (Exception. "hey")))
y))
#'user/x
user> (x 2)
4
user> (x 1)
它让我进入调试器,但看起来还不完整:
hey
[Thrown class java.lang.Exception]
Restarts:
0: [QUIT] Quit to the SLIME top level
Backtrace:
0: NO_SOURCE_FILE:1 user/x
[No Locals]
1: NO_SOURCE_FILE:1 user/eval1854
[No Locals]
2: Compiler.java:6465 clojure.lang.Compiler.eval
3: Compiler.java:6431 clojure.lang.Compiler.eval
4: core.clj:2795 clojure.core/eval
5: core.clj:532 swank.core/eval690[fn]
6: MultiFn.java:163 clojure.lang.MultiFn.invoke
7: basic.clj:54 swank.commands.basic/eval-region
8: basic.clj:44 swank.commands.basic/eval-region
9: basic.clj:78 swank.commands.basic/eval880[fn]
--more--
不显示局部变量。没有继续的选项。我看了视频:http://vimeo.com/23932914如何获得与 slime/emacs/clojure 相同的配置。
最佳答案
如果我理解正确,你想在异常点看到局部变量,但是,我相信你的问题是异常被捕获的地方(在 x
函数退出之后) 您已经移出了定义局部变量的堆栈框架。
例如,如果你设置了一个断点......
user> (defn x [x]
(let [y (* x 2)]
(when (= 2 y)
(swank.core/break)
(throw (Exception. "hey")))))
user> (x 1)
然后当您到达断点并获取堆栈跟踪时,本地变量可用。
BREAK:
[Thrown class java.lang.Exception]
Restarts:
0: [QUIT] Quit to the SLIME top level
1: [CONTINUE] Continue from breakpoint
Backtrace:
0: NO_SOURCE_FILE:1 user/x
Locals:
x = 1
y = 2
1: NO_SOURCE_FILE:1 user/eval6821
2: Compiler.java:6465 clojure.lang.Compiler.eval
3: Compiler.java:6431 clojure.lang.Compiler.eval
4: core.clj:2795 clojure.core/eval
5: core.clj:532 swank.core/eval819[fn]
6: MultiFn.java:163 clojure.lang.MultiFn.invoke
7: basic.clj:54 swank.commands.basic/eval-region
8: basic.clj:44 swank.commands.basic/eval-region
9: basic.clj:78 swank.commands.basic/eval1009[fn]
--more--
深入了解 (swank.core/break)
的源代码,您实际上可以自己捕获这些本地绑定(bind)....
(defn x [x]
(let [y (* x 2)]
(when (= 2 y)
(swank.core/local-bindings)
(throw (Exception. "hey")))))
你将从“嘿”异常中获得与上面相同的堆栈跟踪...
更多详情 here
关于emacs - Clojure 史莱姆配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160113/
我是一名优秀的程序员,十分优秀!