使用IntelliJ Idea 10和La Closure插件版本0.3.15调试Clojure

时间:2010-12-06 23:10:59

标签: debugging clojure intellij-idea

我正在使用IntelliJ Idea 10和La Closure插件版本0.3.15 和Java 6我已经将Clojure 1.2添加到了一个项目中。

我放在Java代码上的断点受到了攻击,但是我提出的断点 Clojure没有。实际上,如果调试器在Java上停止 断点,Clojure代码上的断点有一个x和它们 有一个警告说,例如,找不到可执行代码 debugland $ eval3中的第4行。

我尝试在像println这样的Clojure核心函数中添加断点, 但我仍然得到红色的x。真的,非常感谢任何帮助 就此而言。我已经尝试过Idea 9和Clojure 1.1和1.2 结果

2 个答案:

答案 0 :(得分:2)

我正在使用Clojure 1.3(由github源构建),LaClojure 0.3.74和在JavaEA 10.0.3上运行的Sun Java 6u24。我的断点似乎像宣传的那样工作(用红点表示复选标记),尽管你会在非评价代码(例如[]与function_name []上获得断点的x'。例如:

(ns clojure.examples.hello
(:gen-class))

(defn hello          <---- Get check breakpoints here.
  []                 <---- Get x breakpoints here, can't eval [] but hello[] is okay!!!
  (let [a 12
        b (/ a 2)    <---- Get check breakpoints here.
        c (* b 3)]
    (if (< b a)
      (println (str b "<" a))      <---- Get check breakpoints here.
      (println (str a "<" b)))))

您可能想要升级到最新版本的IDEA / LaClojure(Java 6uX和Clojure 1.2应该可以正常工作),确保IDEA知道在哪里找到你的clojure罐子以及使用哪个jdk(听起来你知道如何配置一个可用的IDEA设置,所以你很好),并确保你只有可以评估的表达式中的bp。

答案 1 :(得分:1)

我相信正在发生的事情是Clojure正在创建Idea的调试器无法理解的jvm原语。这个coud意味着原语不是Idea通常认可的大小或类型。请参阅herehere

这可能可以通过编写Clojure在编写虚拟机代码时使用的结构/原语的目录来修复,并在调试Clojure时切换到该目录。不幸的是,这也意味着您可能必须等待IntelliJ才能解决问题。

我已将问题发布给Jetbrains技术支持。