似乎有关于 debugging Play 的大量文档应用with IntelliJ IDEA ,但他们都假设 Play 是用 SBT 构建的。
使用 Gradle 进行调试应该像以下一样简单:
- 设置一些断点
- 运行
GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9999"gradlew --no-daemon :runPlayBinary
- 运行如下所示的 IntelliJ 远程配置:
- 点击http://localhost:9000并做一些有趣的事情来导致断点被命中
我遇到的问题是:从未遇到断点,处理继续正常进行。 技术:Play 2.3.X、IDEA 14.1、Gradle 2.8、Scala 2.10
我一定漏掉了一些东西,那是什么?
最佳答案
您在错误的位置设置了调试参数。在 GRADLE_OPTS
中设置它定义了运行 Gradle 时要使用的系统属性。由于 Gradle 启动一个新的 JVM 进程来执行 Play Framework 应用程序,因此您必须将这些属性传递给运行该应用程序的 JVM。
您可以使用 PlayRun
任务添加 JVM 参数。像这样的事情:
tasks.withType(PlayRun) {
forkOptions.jvmArgs = ['-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999']
}
但请注意,此设置将在每次执行应用程序时设置 Debug模式。也许您应该添加一些参数来验证是否需要 Debug模式。
之后就可以在IDE中正常设置远程调试了。
希望有帮助;)
关于debugging - 如何调试使用 Gradle 构建的 Play 2 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816953/