2012-04-15 11 views
3

私は1.4のスワンクで釣り竿1.7を持っています。次にemacsの設定をしないで、marmaladeからclojure-modeをインストールし、leinで新しいプロジェクトを作成し、project.cljを開き、M-x clojure-jack-inを実行します。スライムはうまく始まります。それから私は、それはデバッガに私をスローし、この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どのようにslime/emacs/clojureと同じ設定になりますか?

答えて

2

このビデオでは、swank-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

関連する問題