2012-04-15 64 views
3

我有雷音1.7與1.4斯旺克插件。於是,我開始沒有emacs的配置和果醬安裝Clojure的模式,創建雷音一個新項目,開拓project.clj然後做M-X的Clojure插孔項。煤泥開始就好。然後我進入這個Clojure的煤泥配置

; 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我怎麼到淤泥/ emacs的/ Clojure中的相同的配置。

回答

2

該視頻顯示自吹-CLJ,即更名爲ritz。請參閱有關如何安裝和使用說明庫...

3

如果我理解正確的,你想看到當地人在異常點,但是,我相信,你的問題是,在異常被抓住(在退出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),實際上,你可以自己捕捉到這些本地綁定....

(defn x [x] 
    (let [y (* x 2)] 
    (when (= 2 y) 
     (swank.core/local-bindings) 
     (throw (Exception. "hey"))))) 

,你會從「嘿嘿」異常得到上述同樣的堆棧跟蹤。 ..

更多詳細信息here