Ausführliche Erläuterung des JAVA-Remote-Debugging

Inhaltsverzeichnis

1. Was ist Remote-Debugging?

2. Remote-Debuggen eines gewöhnlichen JAVA-Programms

Umfeld

Testprogramm

Programmstartbefehl

Compiler-Konfiguration

3. Remote-Debug-JAVA-Webprogramm

4. Remote-Debug-Spring-Boot-Programm


1. Was ist Remote-Debugging?

Remote-Debug, also ein Programm, das lokal und remote bereitgestellt werden kann, ist sehr nützlich, um Probleme in der Remote-Umgebung zu lokalisieren. Der Grund, warum wir sagen, dass die Remote-Umgebung nicht zum Lokalisieren von Fehlern in der Produktionsumgebung geeignet ist. Das ist da Remote-Debugging normalerweise während der Entwicklungs- und Testphase verwendet wird und aufgrund möglicher Leistungseinbußen nicht für den Einsatz in Produktionsumgebungen empfohlen wird. Natürlich ist die Verwendung von Remote-Debug, wenn es keine andere Möglichkeit gibt, eine der effizientesten Methoden zur Lokalisierung von Produktionsproblemen.

Remote-Debug kann als JVM-Spezifikation verstanden werden. Natürlich handelt es sich nicht um eine separate Spezifikation. Es ist Teil des JDWP-Protokolls (Java Debug Wire Protocol), das die Interaktion zwischen der Java Virtual Machine (JVM) und dem Debugger definiert. Weg. Über JDWP können Entwickler Haltepunkte festlegen, Variablen anzeigen, Codes und andere Vorgänge in den Entwicklungstools ausführen, um laufende Java-Programme zu debuggen. Um es ganz klar auszudrücken: Die JVM, die dem Protokoll folgt, unterstützt Debugging und Remote-Debugging.

2. Remote-Debuggen eines gewöhnlichen JAVA-Programms

2.1. Umwelt

JDK:1.8

Compiler: IDEE

2.2. Testverfahren

Hier haben wir ein sehr einfaches Testprogramm geschrieben, das i jede Sekunde um 1 erhöht und es dann in ein JAR-Paket packt

public static void main(String[] args) throws InterruptedException {
        int i=0;
        while (true){
            Thread.sleep(1000);
            i++;
        }
    }

Ich vermute, dass viele Studenten vergessen werden, wie man gewöhnliche Java-Se-Programme in IDEA in JARs verpackt. Hier ist etwas intimer und die Verpackungsmethode wird angegeben. Verwenden Sie das Maven-Plug-In zum Verpacken von JAR-Paketen, geben Sie den Haupteintrag an und dann installieren:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.eryi.Test</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.3. Programmstartbefehl

Um das Remote-Debuggen durchzuführen, verwenden Sie zunächst Parameter, um das Remote-Debuggen beim Programmstart zu aktivieren, und führen Sie die Parameteranweisungen wie folgt aus:

 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<host>:<port>

  • transport: Geben Sie die Art der Debugging-Informationsübertragung an, die im Allgemeinen verwendet wird dt_socket.
  • server: Geben Sie an, ob es sich um einen Debug-Server handelt. Verwenden Sie diese Option, um „ yJa“ anzugeben.
  • suspend: Geben Sie an, ob beim Start angehalten werden soll. Verwenden Sie ndie Option, um nicht anzuhalten.
  • address: Geben Sie den Host und den Port für das Debuggen und Überwachen an, d. h. das Remote-Debugging wird über diesen Port durchgeführt.

Am Beispiel unseres obigen Programms lautet der abgeschlossene Startbefehl:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 -jar test-1.0-SNAPSHOT.jar

Wenn der Start erfolgreich ist, wird der Port angezeigt, der auf das Debuggen lauscht:

2.4. Compiler-Konfiguration

Wenn wir in IDEA remote debuggen möchten, müssen wir Folgendes konfigurieren:

Konfigurationen hinzufügen

 Neue Konfiguration hinzufügen -> Remote

Aufbau:

Beginnen Sie mit dem Debuggen:

Sie können sehen, dass das Programm einen Haltepunkt eingegeben hat.

3. Remote-Debug-JAVA-Webprogramm

Als häufig verwendeter Webserver unterstützt Tomcat aus Gründen der Benutzerfreundlichkeit natürlich die Remote-Debug-Funktion. Gewöhnliche Java-Programme werden mit Java -jar gestartet, und Tomcat wird mit einem Startskript gestartet, das alle beim Start von Tomcat auszuführenden Befehle aufzeichnet, und auch Remote-Debug ist darin geschrieben.

Ändern Sie start.sh in der Windows-Umgebung und fügen Sie den folgenden Befehl zur ersten Zeile hinzu:

export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=<host>:<port>,server=y,suspend=n"

Ändern Sie start.bat in der Linux-Umgebung und fügen Sie den folgenden Befehl zur ersten Zeile hinzu:

set „CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=<host>:<port>,server=y,suspend=n“

4. Remote-Debug-Spring-Boot-Programm

Als JAR kann das Spring-Boot-Projekt mit java -jar debuggt werden und dann das Debuggen normaler Java-Programme mit Parametern gestartet werden. Darüber hinaus bietet Spring Boot auch eine bequemere Möglichkeit zum Remote-Debuggen, nämlich Konfigurieren Sie die Parameter im Spring Boot-Verpackungs-Plugin.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<host>:<port></jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

Ich denke du magst

Origin blog.csdn.net/Joker_ZJN/article/details/132252506
Empfohlen
Rangfolge