Pregunta ¿Cómo depurar un archivo Gradle build.gradle (en un depurador, con puntos de interrupción)?


¿Hay alguna herramienta que me permita establecer puntos de interrupción en un archivo build.gradle y pasar por tareas en un depurador?

Nota: Creo que estoy haciendo una pregunta diferente a las preguntas similares sobre stackoverflow sobre la depuración de plugins de Gradle, donde (presumiblemente) la intención es pasar por el código de plugin personalizado de Groovy o Java ubicado en un archivo separado. Quiero establecer un punto de interrupción en una tarea de Gradle en un archivo build.gradle simple, como ...

task example {
   println "I want to set a breakpoint here"
}

... así que cuando corro gradle example Puedo inspeccionar el contexto en un depurador.

(Para aquellos que me dirijan a IntelliJ ... aunque el sitio web de JetBrains anuncia que apoyan la depuración de scripts de Gradle en IDEA UI, AFAICT no es cierto, ya que se informó que se rompió en IDEA13 EAP y no se ha corregido en IDEA14. Depuración de archivos de compilación Gradle en Intellij / Android Studio )

¿Hay alguna herramienta de depuración que me permita establecer un punto de interrupción en un archivo build.gradle, o hay algo sobre el Gradle DSL que hace que sea fundamentalmente imposible establecer puntos de interrupción en una tarea como mi ejemplo anterior?


32
2018-02-10 17:09


origen


Respuestas:


hay una manera más fácil:

solo agregue en su línea de comando -Dorg.gradle.debug=true --no-daemon

por ejemplo:      gradle nameOfTask -Dorg.gradle.debug=true --no-daemon

entonces debería comenzar su IDE y ejecutar la depuración remota con el puerto localhost 5005, eso todos.

Gradle está esperando, porque servidor de opción estándar = y

org.gradle.debug

Cuando se establece en verdadero, Gradle ejecutará la construcción con la depuración remota habilitada, escuchando en el puerto 5005. Tenga en cuenta que esto es equivalente a agregar -agentlib: jdwp = transport = dt_socket, server = y, suspend = y, address = 5005 al JVM línea de comando y suspenderá la máquina virtual hasta que se adjunte un depurador.

Enlace a documentos


11
2017-10-04 08:40



Personnaly hago esto cuando necesito depurar compilaciones de compilación:

Dentro de tu terminal haz

export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

Luego ejecuta tu compilación

gradle clean install

Finalmente ponga algunos puntos de interrupción e inicie la configuración de depuración remota dentro de su IDE en el puerto 5005 ¡y listo!


10
2017-09-03 15:00