2012-04-15 4 views
3

나는 1.4의 swank로 1.7을 가지고있다. 그런 다음, emacs 설정없이 마멀레이드에서 clojure-mode를 설치하고, lein으로 새로운 프로젝트를 만들고, project.clj를 연 다음 M-x clojure-jack-in을 수행합니다. 점액은 잘 시작됩니다. 그럼 그것은 디버거에 나를 던져이Clojure Slime Configuration

; 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

이 비디오에서는 ritz으로 이름이 변경된 swank-clj를 보여줍니다. 그것을 설치하고 사용하는 방법에 대한 저장소의 지시 사항을 참조하십시오 ...

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