intellij ideas depurar debug java debugging grails intellij-idea

java - depurar - debugging ideas



IntelliJ IDEA Debugger no está trabajando en un proyecto de Grails (11)

No puedo depurar mi código en Intellij IDEA. Cuando el modo de depuración está activo y en ejecución, pero los puntos de interrupción no tienen marcada la "v" que representa un punto de interrupción válido y que se puede detener.

Ver la imagen: http://prntscr.com/1w0owu .

Realmente busco en la web una respuesta. ¿Qué debo hacer?




Desde Grails 2.3, se introduced ejecución bifurcada para varios comandos de Grails (por ejemplo, run-app , test-app ). Si solo depura una aplicación Grails de IntelliJ IDEA, el proceso de GrailsStarter se iniciará con opciones de depuración GrailsStarter . La salida en la consola IDEA será:

/usr/lib/jvm/default-java/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59935,suspend=y,server=n [...] /opt/idea-IU-133.330/lib/idea_rt.jar org.codehaus.groovy.grails.cli.support.GrailsStarter [...] run-app Connected to the target VM, address: ''127.0.0.1:59935'', transport: ''socket''

La aplicación en sí se iniciará en un proceso separado llamado ForkedTomcatServer . Aquí es donde se ejecuta el código y dónde debe conectarse su depurador.

Para lograr eso, establezca debug: true en BuildConfig.groovy en la configuración de grails.project.fork de grails.project.fork . Simplemente ejecute Grails ahora desde IDEA (no realice la depuración) y verá la siguiente línea en la consola cuando la aplicación esté lista para atender solicitudes HTTP:

Listening for transport dt_socket at address: 5005

Aquí es donde desea dirigir una configuración de ejecución remota separada. Tan pronto como su depurador remoto se conecte, emita una solicitud HTTP y la depuración funcionará.

También puede desactivar la ejecución de bifurcación para comandos de compilación / prueba / ejecución / guerra / consola Grails por completo estableciendo el valor asociado con la entrada de comando en grails.project.fork en false . Pero luego perderá los beneficios de la ejecución bifurcada agregada en Grails 2.3.


Esta no debería ser nunca la configuración predeterminada y solo se debe dejar a elección del individuo. Es un gran problema hacer dos configuraciones solo para que esto funcione en modo de depuración en intellij. Primero debe configurar o modificar la configuración de ejecución normal agregando "--debug-fork" después de la ejecución-aplicación. En segundo lugar, debe configurar la depuración remota, al tiempo que acepta todos los valores predeterminados. Luego debe ejecutar la configuración de ejecución y, cuando se esté ejecutando, ejecutará la configuración de depuración. Que dolor. Prefiero totalmente deshacerme de correr sin la opción bifurcada mientras desarrollo. El tiempo es dinero y no tengo tiempo para curiosear. Vea la explicación del Sr. HAKI al hacer esto. http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/


Este es un asunto muy simple con Grails 3 e Idea (2016.1). Ya no es necesario editar ningún archivo, como se recomienda en las otras respuestas.

Por alguna razón, el ícono de depuración en la barra de herramientas de Idea está atenuado, por lo que solo tiene que navegar al punto de entrada de la aplicación (la clase que tiene el método principal estático vacío que inicia la aplicación), haga clic en una de las flechas el canal izquierdo y seleccione la opción Depurar.

De los documentos de JetBrains:

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-grails-3.html

Aplicación de Depuración de Grails 3

IntelliJ IDEA le permite depurar su aplicación Grails 3 utilizando Application.groovy.

En la ventana de la herramienta Proyecto, abra el directorio de inicio y haga clic con el botón derecho en Application.groovy. De la lista desplegable seleccione Depurar Grails: ''nombre'' grails3_debug_app. También puede usar el editor para iniciar el proceso de depuración.


He intentado todo lo mencionado aquí sin éxito. La única información útil está here .

En esencia, debe deshabilitar la ejecución de bifurcación agregando lo siguiente a grails-app/conf/BuildConfig.groovy :

grails.project.fork = [ test: false, run: false ]

Ahora la depuración está disponible en IntelliJ IDEA Ultimate Edition v.12.1.6 solo mediante depuración normal sin depuración remota. Probado en Grails 2.3.1, Java 1.7.0_45, Windows 7 de 64 bits.


La depuración de una aplicación Grails (2.3+) se puede hacer de dos maneras.

1. Solución simple: deshabilitar depuración

edita BuildConfig.groovy:

grails.project.fork = [ war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ... run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...

a

grails.project.fork = [ war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ... run: false,

Pros:

  • Simple de hacer (y seguir con su desarrollo)

Contras:

  • Esto elimina la posibilidad de reemplazar el código de tiempo de ejecución. Esto significa que si cambia el código, ya no se recogerá automáticamente y deberá reiniciar la aplicación para ver los cambios. Esto puede consumir mucho tiempo.

2. Solución involucrada: tiempo de ejecución bifurcado de depuración

Esta es una solución algo más compleja en la que se adjunta un depurador a una aplicación de grails en ejecución. Se describe con más detalle en esta publicación de blog .

Después de la configuración, tiene una configuración de ejecución adicional que le permite iniciar grails en modo bifurcado y otra configuración adicional de ejecución que le permite depurar ese modo bifurcado. Lo que llama la atención es que debes iniciar ambos o no funciona.

Pros:

  • Tiene depuración de errores y de código de tiempo de ejecución
  • Esto no interfiere con el inicio de la aplicación en modo normal. (es decir, tienes opciones adicionales)

Contras:

  • La configuración lleva un poco de tiempo
  • Iniciar en modo de depuración requiere un proceso de dos pasos más complejo (es decir, lleva más tiempo)

Consideraciones

La solución 2 es en su mayoría superior en el sentido de que permite flexibilidad. Personalmente, no utilizo depuración mucho, así que simplemente empiece en modo normal. Cuando quiero depurar, reinicio en modo de depuración.

La solución 1 es estrictamente mejor si necesita depurar y también necesita reiniciar mucho. Por ejemplo, cuando está trabajando en las clases de dominio o la configuración de la base de datos en su BootStrap.groovy.


Ninguna de las otras respuestas funciona para mí en Grails 3.x en 2016 con Intellij 15.0.4. Esto funciona para mí:

Comienza a gritar en intellij con este comando:

run-app --debug-jvm

La consola debería salir: "Escuchando por el transporte dt_socket en la dirección: aplicación 5005 Grails que se ejecuta en http: // localhost: 8080 en entorno: desarrollo"

Ahora puede agregar una nueva configuración de tipo, "Remoto", en Intellij. Luego comience con sus valores predeterminados.

Y la nueva ventana de la consola de depuración debería escribir: "Conectado a la VM objetivo, dirección: ''localhost: 5005'', transporte: ''socket''"

Hecho.

Para aquellos interesados, la referencia a la documentación de grails 3.x para iniciar un servidor depurable se encuentra en la sección 2.8, runningAndDebuggingAnApplication:

http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication

"Hay varias formas de ejecutar la clase Application, si está utilizando un IDE, simplemente puede hacer clic derecho en la clase y ejecutarlo directamente desde su IDE, lo que iniciará su aplicación Grails. Esto también es útil para la depuración ya que puede depurar directamente desde el IDE sin tener que conectar un depurador remoto cuando se utiliza el comando run-app --debug-jvm desde la línea de comando ".

Nota IMPORTANTE. Cuando probé "simplemente haga clic con el botón derecho en la clase y lo ejecute directamente desde su IDE", la aplicación se inició. Sin embargo, todas las solicitudes que envié a mi controlador resultaron en 500 errores con el mensaje: "No se pudo resolver la vista con el nombre ''/ myendpoint'' en servlet con el nombre ''grailsDispatcherServlet''.

Entonces, volví a las instrucciones de arriba.



Prueba esto:

En la idea, elija Editar configuraciones de la lista al lado del botón ''Ejecutar''. A continuación, agregue Remote , elija su nombre y deje la configuración predeterminada de configuración remota. (puerto 5005 etc.)

Ejecuta tu aplicación desde la consola usando

grails run-app --debug-fork

En idea, elija su configuración de la lista y pulse el botón de depuración cuando la consola muestre información:

Listening for transport dt_socket at address: 5005


Solo tres conjeturas:

Intente ejecutar run-app , no run-war , ambos deberían funcionar, pero puede que run-war simplemente no funcione.

O bien: intente depurar de forma remota desde la consola:

grails -debug run-app y luego conectarse con Remote Debug in Idea.

O, el último recurso: la degradación de su proyecto a las versiones anteriores de Grails podría funcionar. Sí, esto es realmente molesto

Espero que esto ayude.