使用kapt和gradle时无法调试注释处理器

Dap*_*app 7 remote-debugging annotation-processing kotlin kapt annotation-processor

我正在构建一个注释处理器,我最近使用kotlin-kapt插件从使用默认的annotationProcessor类型转换为kapt.

我正在使用该命令调试我的处理器

./gradlew --no-daemon -Dorg.gradle.debug=true :app:clean :app:compileDebugJavaWithJavac
Run Code Online (Sandbox Code Playgroud)

(完整说明:https://stackoverflow.com/a/42488641/502463)

然后运行远程调试配置.当我使用annotationProcessor时,我可以点击断点,并进行调试.使用kapt,我的处理器运行,但我无法调试它.没有触发断点.

我的kotlin版本是1.1.2-3

yan*_*nex 11

您实际上想要调试Kotlin编译器守护程序,而不是Gradle守护程序.以下是传递所需JVM参数的方法:

./gradlew <tasks> -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=n"
Run Code Online (Sandbox Code Playgroud)

  • 我也在努力调试IntelliJ Idea中的非android项目.一位同事建议kotlin可能正在运行它自己的守护进程,这会阻止在适当的时候附加调试配置.运行科特林没有守护修复问题:`./gradlew清洁:样品:建立--no守护-Dorg.gradle.debug =真-Dkotlin.compiler.execution.strategy ="进程中" -Dkotlin.daemon.jvm.选项= " - Xdebug的,-Xrunjdwp:交通= dt_socket \,地址= 5005 \,服务器= Y \,暂停= N"`.在CLI中运行此命令,然后在您感觉舒适时附加远程调试配置,而不是在`app:kaptDebugKotlin`任务或其他任何时候 (5认同)