如何使用 gradle 调试弹簧应用

2022-08-31 17:08:29

我正在开发弹簧应用程序,需要逐步执行控制器方法以查看其工作原理。我正在eclipse中工作,并使用命令构建我的应用程序。gradle bootRun

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

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

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


答案 1

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


答案 2

作为对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:portport