前面几篇关于Gradle插件的开发。在开发过程中,遇到问题就需要找出问题出在哪里。这个问题是自定义插件中还是其他地方?通常报错会给提示:
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
然后添加--info
或--debug
选项或许可以解决。有时我们需要深入源代码找出问题发生时的情况,又或者想要跟踪代码的执行过程以了解原理等等。这种方式仍然称为“断点调试”。
工具
IntelliJ IDEA、Android Studio或者类似环境
断点调试
点击Edit Configurations
点开左边的“+”号,点击“Remote”
- 修改名称(不改默认Unnamed)
-
Use module classpath
这一项如果要调试顶级build.gradle保持默认就可以了,如果是gradle插件工程中的代码就选插件所在的模块。 - 默认远程调试的服务器是
localhost:5005
- 点击"OK"
选中远程调试任务如图
在需要调试的地方打上断点,然后命令行执行调试任务
./gradlew tasks -Dorg.gradle.debug=true --no-daemon
上面执行tasks
任务并打开Gradle的“调试模式”。运行时你会发现Gradle停止在远程配置调试器连接之前。
> Starting Daemon
点击调试按钮就可以开始连接远程调试了。
概括
- IntelliJ(Android Studio)
Edit Configurations
点击+
找到Remote
点击创建远程配置 - 填写信息. Name自定义, 默认远程调试
localhost:5005
-
Search sources using module's classpath
选择需要调试的插件模块 - 命令行执行任务调试:
./gradlew tasks -Dorg.gradle.debug=true --no-daemon
,等待连接调试 - 源代码断点, 选择刚创建的调试配置, 点击
Debug Xxx(Shift+F9)
远程调试同样适用于注解处理器(Annotation Processor)
问题
Remote Configuration debugger **can not be attached.
- 这是因为端口(默认5005)已经被另一个正在运行的Gradle守护进程占用了,简单的停止即可
./gradlew --stop