如何使用 intellij 调试 Java 注释处理器?
如何使用 intellij 调试 Java 注释处理器?
最好使用IDEA IntelliJ。我尝试在处理器内部设置断点并运行,但它没有中断。
如何使用 intellij 调试 Java 注释处理器?
最好使用IDEA IntelliJ。我尝试在处理器内部设置断点并运行,但它没有中断。
如果确实需要调试注释处理器,则最好从命令行运行注释处理器,而不是在启用了调试的 IDE 中运行注释处理器,然后使用 IDE 的调试器附加到该处理器。
如果直接运行,则可以通过指定以下额外参数来调试此参数:javac
javac -J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 ... (usual javac parameters go here)
如果运行 Maven,请使用标准命令代替 - Maven 在进程内运行编译器。mvndebug
mvn
如果运行 Ant,请在运行之前将以下内容添加到环境变量中:ANT_OPTS
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
通过所有这些执行,javac,Ant或Maven进程将等待您附加调试器,然后再实际开始执行。IntelliJ对此的说明在这里。对于 Eclipse,请点击此处。
本教程是为一个 Android 项目编写的。像往常一样,主模块名称是“应用程序”。该项目包含一个名为“注释”的子模块,它是“应用程序”的子依赖项。“app”模块使用 gradle 声明运行注释处理。apt project(':annotation')
简单版本(从终端运行编译并从IDE附加)
<whole project>
./gradlew --stop
./gradlew --no-daemon -Dorg.gradle.debug=true :app:clean :app:compileDebugJavaWithJavac
扩展版本(使用 gradle.properties)
org.gradle.daemon=false org.gradle.debug=true
./gradlew :app:clean :app:compileDebugJavaWithJavac
高级版本(只需在 IDE 中按调试)
#!/bin/bash ./gradlew :app:clean :app:compileDebugJavaWithJavac &
请记住后台处理的“&”符号。
警告
搞砸了 gradle 编译,编译过程中的 NullPointer 异常等有时会导致 AndroidStudio 被卡住(在 gradle 刷新阶段冻结)。如果无法从 IDE 停止 gradle,请在终端中使用此命令:
ps -A | grep gradle | awk '{ print $1; }' | xargs kill -9
在项目刷新期间关闭调试选项有时有助于 Android Studio 回到正确的轨道。