2013-10-11 3 views
2

Clojure 및 Eclipse에 초보자 그래서 나와 함께 참아주십시오.Eclipse에서 Clojure 디버깅

CCW (Counter Clockwise) 및 Leiningen이 설치된 Eclipse Juno에서 Clojure 1.5.1을 실행 중이며 Eclipse 디버거에서 Clojure 코드를 실행하는 프로세스를 테스트하고 있습니다. 시작으로-Clojure의 응용 프로그램 및 REPL 실행 - 디버그를 클릭

(ns myproject.core) 

(defn foo [str] 
    (println str "Hello, World!") 
) 

(defn hello [who] 
    (str "Hello " who "!")) 

나는 (println str "Hello, World!")(str "Hello " who "!")) 라인에 중단 점을 설정은, 패키지 탐색기 창에서 "myproject라는"를 선택 : 나는 다음과 같은 파일을 사용하고 있습니다 . 이제, 여기에 문제/문제이다 : 나는 REPL에서 (hello "Fred")를 입력하면 나는 (myproject.core/hello "Fred")로 프로 시저 호출을 한정하려고하면

CompilerException java.lang.RuntimeException: Unable to resolve symbol: hello 
    in this context, compiling:(NO_SOURCE_PATH:1:1) 

내가 같은 오류가 얻을. 내가 실행할 수있는 유일한 방법은 먼저 (require 'myproject.core)을 발행 한 다음 (myproject.core/hello "Fred")을 발행하는 것입니다. 이렇게하면 중단 점이 인식되고 코드가 적절한 위치에서 중단되며 변수가 표시되고 수명이 좋습니다.

(require 'myproject.core) 대신 (use 'myproject.core)을 입력하면 함수 이름을 완전히 한정하지 않아도되지만 use을 사용하는 것은 권장되지 않습니다.

반면에 : Ctrl-Alt-S를 사용하여 REPL에 코드를 "보내"REPL을 시작한 경우 (이것은 Windows에서) (hello "Fred")을 입력하고 예상되는 결과를 얻을 수 있습니다. 물론, 이렇게하면 디버거가 시작되지 않고 중단 점이 생성되지 않습니다.

내 질문 : 이클립스 디버거에서 코드를 실행하고 네임 스페이스를 자동으로 인식하도록하는 방법이 있습니까? 코드는 require 또는 use을 사용할 필요가없고 Ctrl-Alt-S를 통해 REPL에 "전송"되며 함수 이름을 네임 스페이스로 완전히 한정하지 않아도됩니까?

답변

2

Ctrl-Alt-N은 CCW에서 "REPL을 파일의 네임 스페이스로 전환"에 바인딩됩니다. REPL은 "사용자"네임 스페이스에서 시작합니다. 일단 "myproject.core"로 전환하면 use 또는 require이 필요하지 않습니다. in-ns을 사용하여 REPL로 네임 스페이스를 전환 할 수도 있습니다.

관련 문제