2015-02-10 118 views
28

有没有一种工具可以让我在build.gradle文件中设置断点并逐步完成调试器中的任务?如何调试Gradle build.gradle文件(在调试器中,带有断点)?

注意:我相信我提出的问题与关于调试Gradle插件的类似的stackoverflow问题不同,其中(大概)意图是通过位于单独文件中的定制Groovy或Java插件代码。我想设置在摇篮任务断点在一个简单的build.gradle文件,就像...

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

...所以,当我跑gradle example我可以检查在调试器的上下文。 (对于那些将我指向IntelliJ的人......虽然JetBrains的网站宣称他们支持在IDEA UI中调试Gradle脚本,但AFAICT这是不真实的,因为这被报告在IDEA13 EAP中破坏并且尚未修复在IDEA14中,请参阅Debugging Gradle build files in Intellij/Android Studio

是否有任何调试工具允许我在build.gradle文件中设置断点,或者是否存在有关Gradle DSL的某些内容,使得从根本上无法在任务中设置断点我的例子,上面?

+1

我怀疑你可以从Android Studio中调试,但你可以调用的println并观察语句中的消息一节。 – j2emanue 2015-07-10 22:12:15

回答

8

Personnaly我这样做,当我需要调试构建脚本:

里面你终端不同

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

然后运行构建

gradle clean install 

最后把一些断点,并启动远程在端口5005的IDE中调试配置,你很好!

+0

当我尝试这个时,android studio会告诉我以下错误:无法打开调试器端口(localhost:5005):java.net。ConnectException“连接被拒绝” – j2emanue 2015-09-05 00:10:17

+0

当您运行gradle干净安装时,构建是否停止在 “侦听传输dt_socket的地址:5005” – 2015-09-09 08:21:47

+1

OP询问“是否有任何调试工具允许我在build.gradle中设置断点文件“,那么你可以扩展”放置一些断点“吗? – Noumenon 2015-09-19 21:44:22

8

有更简单的方法:

只需添加在您的COMAND行-Dorg.gradle.debug =真

例如: gradle nameOfTask -Dorg.gradle.debug=true

,那么你应该开始你的IDE和运行远程调试与本地端口5005,所有。

摇篮正在等待你的,因为标准的选项服务器= Y

org.gradle.debug

设置为true时,摇篮将运行启用远程调试构建,监听端口5005 。注意,这相当于在JVM命令行中添加-agentlib:jdwp = transport = dt_socket,server = y,suspend = y,address = 5005,并挂起虚拟机,直到连接调试器。

Link to docs

+0

https://docs.gradle.org/current/userguide/build_environment.html上的文档和https://github.com/gradle/上的代码gradle/blob/master/subprojects/core/src/main/java/org/gradle/process/internal/JvmOptions.java#L143表明是的,这基本上等同于@ baptiste-mesta提供的答案。 – Mickalot 2016-10-04 17:40:00

+0

我的gradle构建不会停止并等待调试器连接? – themathmagician 2016-12-22 01:58:53

+0

gradle应该停下来等待调试器,你能告诉我cmd吗? – user1722245 2016-12-27 18:40:12

相关问题