with supported studio run not lower instant generate generar devices debug configurar compilar assembledebug archivo debugging gradle

debugging - supported - gradlew assembledebug



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

¿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 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 de 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?


IntelliJ 2018.2 agregó la capacidad de depuración de scripts de Gradle de una manera similar a cómo podría ejecutar / depurar otros proyectos. Puedes ver el anuncio en las notas de la versión here .

Aquí hay una captura de pantalla de parte de la documentación de 2018.2:

Todavía no es compatible con el kotlin-dsl (ver gradle/kotlin-dsl/issues/39 ).


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!


hay una manera más fácil:

solo agregue en su línea de -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