Подтвердить что ты не робот

Отладка 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 с похожими Результаты.

4b9b3361

Ответ 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