Отладка Clojure с IntelliJ Idea 10 и плагином La Closure версии 0.3.15
Я использую IntelliJ Idea 10 с плагиной La Closure версии 0.3.15
и Java 6 Я добавил Clojure 1.2 в проект.
Точки останова, которые я накладываю на код Java, попадают, но те, на которые я положил
Clojure нет. на самом деле, если отладчик остановлен на Java
точка останова, точки останова в коде Clojure имеют x в них, и они
есть предупреждение, в котором говорится, например, ни один исполняемый код, найденный в
строка 4 в классе на debugland $eval3.
Я попытался установить точки останова в основных функциях Clojure, таких как println,
но я все еще получаю красный x. Было бы действительно, очень ценю любую помощь
на этом. Я пробовал Idea 9 с обоими Clojure 1.1 и 1.2 с похожими
Результаты.
Ответы
Ответ 1
Я использую Clojure 1.3 (построен из источников github), LaClojure 0.3.74 и Sun Java 6u24, работающих на IDEA 10.0.3. Мои контрольные точки, похоже, работают как рекламируемые (получение галочек в красных точках), хотя вы получите x на контрольных точках в нецензурном коде, например [] vs. 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 и какой jdk использовать (звучит так, как вы знаете, как настроить полезную настройку IDEA, так что вы там хорошо) и убедитесь, что у вас есть bp только в выражениях, которые можно оценить.
Ответ 2
Я считаю, что происходит то, что Clojure создает примитивы jvm, которые отладчик Idea не понимает. Этот coud означает, что примитивы не являются размером или типом, который обычно распознает Idea. См. здесь и здесь.
Это может быть исправлено путем создания каталога структур/примитивов, которые Clojure использует при написании кода виртуальной машины и перехода на это при отладке Clojure. К сожалению, это также означает, что вам, возможно, придется подождать, пока IntelliJ устранит проблему.
Я разместил вопрос для технической поддержки Jetbrains.
Ответ 3
Не уверен, что это помогает вашему конкретному случаю, так как мой проект является чистым clojure, но я не смог заставить отладчик ударить по моим точкам останова, пока не настроил фасет clojure для моего проекта (который странно, я не мог понять, как добавить к существующему проекту - мне нужно было создать новый проект с фасеткой).
Этот блог проходит шаги, которые работали на меня:
http://blog.tomeklipski.com/2013/04/running-and-debugging-clojure-code-with.html
Я использую IntelliJ IDEA 14.1.4 и La clojure 0.7.82