wake-up-neo.com

Wie Debuggen von Spring Boot-Anwendung mit Eclipse?

Mein Spring Boot webapp läuft einwandfrei und ich würde es gerne über Eclipse debuggen.

Also, wenn ich meinen Remote Java Application Debugger öffne, welchen Port soll ich hören? Und gibt es eine Einstellung auf meiner Web-App, die ich einstellen muss, um das Debuggen zu aktivieren?

91
JeffLL

Warum klickt ihr nicht einfach mit der rechten Maustaste auf die main() Methode und wählt "Debug As... Java Application"?

153
Dave Syer

Es gibt Abschnitt 19.2 in Spring Boot Reference , das Sie über das Starten Ihrer Anwendung mit aktivierter Remote-Debugging-Unterstützung informiert.

$ Java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
   -jar target/myproject-0.0.1-SNAPSHOT.jar

Nachdem Sie Ihre Anwendung gestartet haben, fügen Sie einfach die Remote Java Anwendungskonfiguration in Run/Debug-Konfigurationen hinzu, und wählen Sie den Port/die Adresse aus Sie haben beim Starten Ihrer App festgelegt, und dann können Sie die Fehlerbehebung durchführen.

83
masster

Einfachere Lösung:

Anstatt mvn spring-boot:run, tippe einfach mvnDebug spring-boot:run

Sie müssen den Debugger weiterhin in Eclipse anfügen, indem Sie eine neue Debug-Konfiguration für eine "Remote Java Application") auf dem entsprechenden Port erstellen.

19

Ich musste kein Remote-Debugging einrichten, um dies zum Laufen zu bringen. Ich habe Maven verwendet.

  1. Stellen Sie sicher, dass Sie das Maven-Plugin in Eclipse installiert haben.
  2. Klicken Sie auf Ausführen> Konfigurationen ausführen> Maven Build> Neue Startkonfiguration :
    • Basisverzeichnis: Navigieren Sie zum Stammverzeichnis Ihres Projekts
    • Ziele: spring-boot::run.
  3. Klicken Sie auf Übernehmen und dann auf Ausführen .

NB. Wenn Ihr IDE beim zeilenweisen Debuggen Probleme hat, den Quellcode Ihres Projekts zu finden, lesen Sie diese SO Antwort , um herauszufinden, wie Sie Ihren Quellcode manuell anfügen können Code an die Debug-Anwendung.

Hoffe das hilft jemandem!

17
DuffJ

Debuggen einer Remote-Staging- oder Produktions-Spring-Boot-Anwendung

Serverseitig

Nehmen wir an, Sie haben die Anleitung von Spring Boot zum Einrichten Ihrer Spring Boot-Anwendung als Dienst erfolgreich befolgt . Ihr Anwendungsartefakt befindet sich in /srv/my-app/my-app.war, Zusammen mit einer Konfigurationsdatei /srv/my-app/my-app.conf:

# This is file my-app.conf
# What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script
# (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script
# gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that
# we can also do in a regular Shell script.

Java_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n"
export SPRING_PROFILES_ACTIVE=staging

Wenn Sie Ihre Spring Boot-Anwendung mit Sudo service my-app restart Neu starten, sollte in der Protokolldatei unter /var/log/my-app.log Die Zeile Listening for transport dt_socket at address: 8002 Stehen.

Client-Seite (Entwicklermaschine)

Öffnen Sie einen SSH-Portweiterleitungstunnel zum Server: ssh -L 8002:localhost:8002 [email protected]. Lasse diese SSH-Sitzung laufen.

Wählen Sie in Eclipse in der Symbolleiste Ausführen -> Debug-Konfigurationen - > wählen Sie Remote Java Application -> klicken Sie auf New Taste -> Wählen Sie als Verbindungstyp Standard (Socket Attach) , als Host localhost und als Port 8002 (oder was auch immer Sie in den vorherigen Schritten konfiguriert haben) Klicken Sie auf Übernehmen und dann Debuggen .

Der Eclipse-Debugger sollte jetzt eine Verbindung zum Remote-Server herstellen. Wenn Sie zur Debug-Perspektive wechseln, sollten die verbundene JVM und ihre Threads angezeigt werden. Haltepunkte sollten ausgelöst werden, sobald sie remote ausgelöst werden.

16
Abdull

Führen Sie den folgenden Befehl aus, wobei pom.xml ist plaziert:

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

Und starte deine remote Java application mit der Debug Option auf Port 5005

13
Arpit

Meiner Meinung nach ist die beste Lösung, ein Plugin in die Datei pom.xml einzufügen, und Sie müssen die ganze Zeit nichts anderes tun:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>
                        -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898
                    </jvmArguments>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
8
krmanish007

Right click on the spring boot project -> debug as -> spring boot App. Setzen Sie einen Debuggerpunkt und rufen Sie die App von einem Client wie dem Postboten auf

3
tadtab
  • rechtsklicke auf dein Projekt und wähle "Debug As => Java application oder Spring Boot App" -capture1 - enter image description here
  • Wenn Sie möchten, dass Ihre Anwendung an einer beliebigen Stelle in Ihrer App angehalten wird, doppelklicken Sie auf die linke Seite. Das Capture 2 wird Ihnen gefallen. enter image description here
  • wenn Sie Ihre App starten, verwenden Sie diese Pfeile, um als Nächstes zu beginnen. (Capture 3) enter image description here
3

Diese Frage ist bereits beantwortet, aber ich habe auch das gleiche Problem zum Debuggen von Springboot + Gradle + jHipster,

Meistens kann die Spring-Boot-Anwendung durch Klicken mit der rechten Maustaste und Debuggen debuggen. Wenn Sie jedoch gradle verwenden und einige zusätzliche Umgebungsparameter einrichten, ist das direkte Debuggen nicht möglich.

Um dies zu beheben, stellte Eclipse eine zusätzliche Funktion zur Verfügung: Remote Java Application

mit diesen Funktionen können Sie Ihre Anwendung debuggen.

Befolgen Sie den folgenden Schritt:

starte deine gradle anwendung mit ./gradlew bootRun --debug-jvm Befehl

Gehen Sie nun zu Eclipse -> Rechtsklick auf Projekt und Debug Konfiguration -> Remote Java Application.

füge deinen Host und Port als localhost und Port als 5005 hinzu (Standard für gradle debug, du kannst es ändern)

Siehe für weitere Einzelheiten und Schritte.

2
bharatpatel

Lesen Sie http://Java.dzone.com/articles/how-debug-remote-Java-applicat , um das Remote-Debugging zu aktivieren. Wenn Sie Tomcat zum Ausführen Ihrer Anwendung verwenden, starten Sie Tomcat mit Remote-Debug-Parametern, oder Sie können Tomcat mit JPDA-Unterstützung mithilfe des folgenden Befehls starten.

Windows

<Tomcat bin dir>/startup.bat jpda

* nix

<Tomcat bin dir>/startup.sh jpda

dadurch wird das Remote-Debugging auf Port 8000 aktiviert

2
Sangram Jadhav

Klicken Sie mit Eclipse oder einer anderen IDE mit der rechten Maustaste auf Ihre Haupt-Spring-Boot-Anwendung und klicken Sie auf "Debuggen als Java application"

1
adia

Klicken Sie mit der rechten Maustaste auf die Hauptklassendatei Spring Boot Applications -> wählen Sie Debug As Optionen -> Java-Anwendung auswählen

enter image description here Jetzt können Sie Haltepunkte verwenden, um die Anwendung zu debuggen.

0
Bishal Jaiswal