webentwicklung-frage-antwort-db.com.de

Wie man die Frühlingsanwendung mit Gradle debuggt

Ich arbeite an der Frühlings-App und muss eine Controller-Methode durchlaufen, um zu sehen, wie sie funktioniert. Ich arbeite in Eclipse und erstelle meine App mit gradle bootRun Befehl.

Wie starte ich es im Debug-Modus?

ich habe es versucht gradle bootRun --debug aber es ist nur ein Debug-Protokoll, kein Debug-Modus

ich habe es versucht gradle help --task bootRun - das gibt mir Informationen über die Aufgabe, die ich dort gesehen habe --debug-jvm Option, aber wenn ich gradle bootRun --debug-jvm Anwendung startet nicht

31
rigby

Nachdem Sie gradle bootRun --debug-jvm Ausgeführt haben, wird die Anwendung angehalten, bis Sie Ihren Debugger mit dem Port verbinden, den er überwacht (Port 5005).

49
dankirkd

Als Antwort auf die Antwort von dankdirkd oben: ( vergleiche )

gradle bootRun --debug-jvm

lässt den Gradle-Build im Debug-Modus laufen. Das ist wahrscheinlich nicht das, was du willst. Sie möchten erreichen, dass die springBoot-Task Ihre Anwendung im Debug-Modus startet.

Die Spring-Boot-Task erweitert die Task gradle JavaExec . Sie können die bootRun-Task in Ihrer build.gradle-Datei konfigurieren, um eine Debug-Konfiguration wie die folgende hinzuzufügen:

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

Für build.gradle.kts würde dies so aussehen (mit deaktiviertem Suspend-Modus):

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

Wenn sich Ihr Server in einer Cloud befindet und Sie von einem lokalen Computer aus debuggen möchten, müssen Sie sicherstellen, dass Verbindungen von außen zugelassen werden. Verwenden Sie in diesem Fall die folgende Konfiguration

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

Beachten Sie, dass die Adresse jetzt 0.0.0.0:port Anstatt nur port ist.

21
rexford