如何用gradle调试spring应用

新手上路,请多包涵

我正在开发 spring 应用程序,需要逐步执行控制器方法才能了解它是如何工作的。我正在使用 eclipse 并使用 gradle bootRun 命令构建我的应用程序。

如何在调试模式下运行它?

我试过了 gradle bootRun --debug 但它只是调试日志,不是调试模式

我试过 gradle help --task bootRun 这给了我关于任务的信息我看到 --debug-jvm 选项但是当我运行 gradle bootRun --debug-jvm 应用程序没有启动–

原文由 rigby 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 487
2 个回答

运行后 gradle bootRun --debug-jvm 应用程序将暂停,直到您将调试器连接到它正在侦听的端口(端口 5005)。

原文由 dankirkd 发布,翻译遵循 CC BY-SA 3.0 许可协议

作为对上述 dankdirkd 回答的回应:( 比较

 gradle bootRun --debug-jvm

将使 gradle 构建在调试模式下运行。那可能不是你想要的。您想要实现的是 springBoot 任务以调试模式启动您的应用程序。

spring boot 任务扩展了 gradle JavaExec 任务。您可以在 build.gradle 文件中配置 bootRun 任务以添加调试配置,如下所示:

 bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=32323"]
}

对于 build.gradle.kts 这看起来像这样(禁用挂起模式):

 tasks {
    val bootRun by getting(BootRun::class) {
        jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=32323")
    }
}

如果你的服务器在云中并且你想从本地机器调试,你需要确保它允许来自外部的连接。在这种情况下使用以下配置

tasks {
val bootRun by getting(BootRun::class) {
    jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
    }
}

请注意,地址现在是 0.0.0.0:port 而不仅仅是 port

原文由 rexford 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题