我正在使用spring app,需要逐步执行控制器方法以查看它是如何工作的。
我在eclipse中工作并使用gradle bootRun
命令构建我的应用程序。
如何在调试模式下运行它?
我试过gradle bootRun --debug
但它只是调试日志,而不是调试模式
我试过gradle help --task bootRun
- 这给了我关于任务的信息
在那里我看到了--debug-jvm
选项,但是当我跑步时
gradle bootRun --debug-jvm
应用程序无法启动
答案 0 :(得分:44)
运行gradle bootRun --debug-jvm
后,应用程序将暂停,直到您将调试器连接到正在侦听的端口(端口5005)。
答案 1 :(得分:21)
作为对dankdirkd上述答案的回应:(compare)
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
答案 2 :(得分:2)
我个人更喜欢进入Gradle tasks
和right-clicking on the bootRun
。与终端相比,这在IDE中很有用。
答案 3 :(得分:1)
对于build.gradle.kts
文件,您也可以在下面简单地使用:
tasks.withType<BootRun> {
jvmArgs = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
}
答案 4 :(得分:-1)
定义一个在子进程中执行Java应用程序的位置。
task executeApp() {
doFirst {
println "Executing java app from Gradle..."
javaexec {
main = "com.mymain"
jvmArgs = ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=30000"]
}
}
}
在Java代码中设置断点。执行Gradle任务后。例如在Windows中:
.\gradlew.bat executeApp
任务等待,直到您连接调试器。例如,在Netbeans中,转到Debug-> Attach debugger,在端口Field上设置30000。