2010-12-06 11 views
27

Estoy usando IntelliJ Idea 10 con el complemento La Closure versión 0.3.15 y Java 6 He agregado Clojure 1.2 a un proyecto.Depuración Clojure con IntelliJ Idea 10 y La Closure Plugin versión 0.3.15

Los puntos de interrupción que puse en el código de Java son golpeados, pero los que puse en Clojure no. de hecho, si el depurador se detiene en un punto de interrupción Java , los puntos de interrupción en el código Clojure tienen una x y tienen una advertencia que dice, por ejemplo, No se encontró código ejecutable en línea 4 en clase en debugland $ eval3 .

He intentado poner puntos de corte en las funciones centrales de Clojure como println, pero sigo recibiendo las x rojas. Realmente, realmente apreciaría cualquier ayuda en esto. He intentado Idea 9 con Clojure 1.1 y 1.2 con resultados similares de .

Respuesta

1

Creo que lo que sucede es que Clojure está creando jvm primitivas que el depurador de Idea no comprende. Esto podría significar que los primitivos no son del tamaño o tipo que Idea normalmente reconoce. Ver here y here.

Esto probablemente se solucione haciendo un catálogo de las estructuras/primitivas que utiliza Clojure al escribir su código de máquina virtual y al cambiar a eso al depurar Clojure. Desafortunadamente, esto también significa que es posible que deba esperar a que IntelliJ solucione el problema.

He enviado la pregunta a Jetbrains Tech Support.

2

Estoy usando Clojure 1.3 (construido a partir de fuentes github), LaClojure 0.3.74 y Sun Java 6u24 ejecutando en IDEA 10.0.3. Mis puntos de interrupción parecen funcionar como se anuncian (obteniendo marcas de verificación en puntos rojos), aunque obtendrá x en puntos de corte en código no evaluativo como [] vs. nombre de función []. Por ejemplo:

(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))))) 

Es posible que desee actualizar a la versión más reciente de IDEA/LaClojure (Java 6uX y Clojure 1.2 debería funcionar bien), asegúrese de IDEA sabe dónde encontrar sus tarros clojure, y que jdk utilizar (parece que sabes cómo configurar una configuración de IDEA utilizable, así que estás bien allí), y asegúrate de tener las expresiones solo de bp que se pueden evaluar.

0

No estoy seguro de si esto ayuda a su caso particular, ya que mi proyecto es puro clojure, pero no pude lograr que el depurador llegue a mis puntos de interrupción hasta que configuré la faceta clojure para mi proyecto (lo que extrañamente pude no averigüe cómo agregar a un proyecto existente: tuve que hacer un nuevo proyecto con la faceta para comenzar).

Este blog va a través de los pasos, que trabajaban para mí:

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

que estoy usando IntelliJ IDEA 14.1.4 y La Clojure 0.7.82

Cuestiones relacionadas