我正在使用带有La Closure插件版本0.3.15的IntelliJ Idea 10和Java6,我已经将Clojure 1.2添加到了一个项目中。
我放在Java代码上的断点会命中,但我放在Clojure上的断点不会。实际上,如果调试器在Java断点处停止,Clojure代码上的断点中会有一个x,并且它们会有一个警告,例如,在类的debugland$eval3的第4行没有找到可执行代码。
我试过在Clojure的核心函数中设置断点,比如println,但是我还是得到了红色的x,我真的非常感谢大家在这方面的帮助。我在Clojure 1.1和1.2上尝试了Idea 9,得到了类似的结果。
发布于 2011-04-18 01:30:15
我使用的是在IDEA 10.0.3上运行的Clojure 1.3 (从github源码构建)、LaClojure 0.3.74和Sun Java6u24。我的断点看起来像广告中所说的那样工作(用红点标记),尽管你会在非求值代码中得到x的断点,比如[]与function_name[]。例如:
(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 jars以及使用哪个jdk (听起来您知道如何配置可用的IDEA设置,所以您很擅长),并确保您只在可计算的表达式中使用bp。
发布于 2011-04-15 09:51:34
我相信正在发生的事情是Clojure正在创建Idea的调试器无法理解的jvm原语。这可能意味着原语不是Idea通常识别的大小或类型。参见here和here。
这可能可以通过对Clojure在编写虚拟机代码时使用的结构/原语进行编目,并在调试Clojure时切换到该目录来解决。不幸的是,这也意味着你可能需要等待IntelliJ来解决这个问题。
我已经把这个问题发到了Jetbrains技术支持上。
发布于 2015-08-16 00:35:10
我不确定这是否对您的特定情况有帮助,因为我的项目是纯clojure的,但直到我为我的项目设置了clojure facet,我才真正能够让调试器命中断点(奇怪的是,我不知道如何添加到现有项目中-我必须使用该facet创建一个新项目才能开始)。
这篇博客介绍了这些步骤,这对我很有效:
http://blog.tomeklipski.com/2013/04/running-and-debugging-clojure-code-with.html
我使用的是IntelliJ IDEA 14.1.4和La Clojure 0.7.82
https://stackoverflow.com/questions/4371908
复制相似问题