debugging clojure intellij-idea

debugging - Depuración de Clojure con IntelliJ Idea 10 y La Closure Plugin versión 0.3.15



intellij-idea (3)

Creo que lo que está sucediendo es que Clojure está creando primitivos jvm que el depurador de Idea no entiende. Esto significa que las primitivas no son del tamaño o tipo que normalmente reconoce Idea. Ver here y here .

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

He publicado la pregunta al Soporte Técnico de Jetbrains.

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.

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

He intentado poner puntos de interrupción en las funciones básicas de Clojure como println, pero todavía obtengo las x rojas. Realmente, realmente apreciaría cualquier ayuda en esto. He probado la Idea 9 con Clojure 1.1 y 1.2 con resultados similares.


Estoy usando Clojure 1.3 (construido a partir de fuentes de github), LaClojure 0.3.74 y Sun Java 6u24 ejecutándose en IDEA 10.0.3. Mis puntos de interrupción parecen funcionar como se anuncian (obtener marcas de verificación en puntos rojos), aunque obtendrá x en puntos de interrupción en el código no evaluativo, como [] vs. function_name []. 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 última versión de IDEA / LaClojure (Java 6uX y Clojure 1.2 debería funcionar bien), asegúrese de que IDEA sepa dónde encontrar sus jarras de clojure y qué jdk usar (suena como que sabe cómo configurar una IDEA utilizable). configuración, por lo que es bueno allí), y asegúrese de tener pb solo en expresiones que puedan evaluarse.


No estoy seguro de que esto ayude a su caso particular, ya que mi proyecto es puro clojure, pero realmente no pude hacer que el depurador alcanzara mis puntos de ruptura hasta que configuré la faceta de clojure para mi proyecto (lo cual, extrañamente, no pude averiguar cómo para agregar a un proyecto existente - tuve que hacer un nuevo proyecto con la faceta para comenzar).

Este blog pasa por los pasos que me funcionaron:

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

Estoy usando IntelliJ IDEA 14.1.4 y La Clojure 0.7.82