首页 文章

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

提问于
浏览
27

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

我放在Java代码上的断点受到了打击,但我在Clojure上放置的断点却没有 . 实际上,如果调试器在Java断点上停止,则Clojure代码上的断点中包含一个x,并且它们会发出警告,例如,在debugland $ eval3的类中的第4行找不到可执行代码 .

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

3 回答

  • 1

    我正在使用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 jar 和使用哪个jdk(听起来你知道如何配置一个可用的IDEA设置,所以你在那里很好),并确保你只有在可以评估的表达式中有bp .

  • 0

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

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

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

  • 2

    不确定这是否有助于你的特定情况,因为我的项目是纯粹的clojure,但我真的无法让调试器达到我的断点,直到我为我的项目设置了clojure方面(奇怪的是我无法弄清楚如何添加到现有项目 - 我必须用facet创建一个新项目才能开始 .

    这篇博客介绍了适合我的步骤:

    http://blog.tomeklipski.com/2013/04/running-and-debugging-clojure-code-with.html

    我使用的是IntelliJ IDEA 14.1.4和La Clojure 0.7.82

相关问题