Explication détaillée du débogage à distance JAVA

Table des matières

1. Qu'est-ce que le débogage à distance ?

2. Programme JAVA ordinaire de débogage à distance

environnement

programme d'essai

commande de démarrage du programme

configuration du compilateur

3. Programme Web JAVA de débogage à distance

4. Programme de démarrage Spring de débogage à distance


1. Qu'est-ce que le débogage à distance ?

Le débogage à distance, c'est-à-dire un programme qui peut être déployé localement et à distance, est très utile pour localiser les problèmes dans l'environnement distant. La raison pour laquelle nous disons que c'est l'environnement distant n'est pas utile pour localiser les bogues dans l'environnement de production. C'est car le débogage à distance est généralement utilisé pendant les phases de développement et de test et n'est pas recommandé pour une utilisation dans les environnements de production en raison d'un impact possible sur les performances. Bien sûr, utiliser le débogage à distance lorsqu'il n'y a pas d'autre moyen est l'un des moyens les plus efficaces de localiser les problèmes de production.

Le débogage à distance peut être compris comme une spécification JVM. Bien entendu, il ne s'agit pas d'une spécification distincte. Il fait partie du protocole JDWP (Java Debug Wire Protocol), qui définit l'interaction entre la machine virtuelle Java (JVM) et le débogueur. Chemin. Grâce à JDWP, les développeurs peuvent définir des points d'arrêt, afficher des variables, exécuter des codes et d'autres opérations dans les outils de développement pour déboguer les programmes Java en cours d'exécution. Pour le dire franchement, la JVM qui suit le protocole prend en charge le débogage et le débogage à distance.

2. Programme JAVA ordinaire de débogage à distance

2.1. Environnement

JDK : 1.8

Compilateur : IDEA

2.2 Procédure d'essai

Ici, nous avons écrit un programme de test très simple, toutes les 1 seconde, je l'incrémente de 1, puis l'emballe dans un package jar

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

Je suppose que de nombreux étudiants oublieront comment empaqueter des programmes java se ordinaires dans des jars dans IDEA.Voici un peu plus intime, et la méthode d'empaquetage est donnée.Utilisez le plug-in maven pour empaqueter les paquets jar, spécifiez l'entrée principale, et puis installez :

<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. Commande de démarrage du programme

Pour déboguer à distance, tout d'abord, utilisez des paramètres pour activer le débogage à distance lorsque le programme démarre, et complétez les instructions de paramètre comme suit :

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

  • transport: Spécifiez le mode de débogage de la transmission des informations, généralement utilisé dt_socket.
  • server: Spécifiez s'il s'agit d'un serveur de débogage, utilisez pour yindiquer oui.
  • suspend: Spécifiez s'il faut faire une pause au démarrage, utiliser nsignifie ne pas faire de pause.
  • address: spécifiez l'hôte et le port pour le débogage et la surveillance, c'est-à-dire que le débogage à distance est effectué via ce port.

En prenant notre programme ci-dessus comme exemple, la commande de démarrage terminée est :

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

Si le démarrage réussit, le port qui écoute le débogage s'affiche :

2.4 Configuration du compilateur

Nous voulons déboguer à distance dans IDEA, nous devons configurer :

ajouter des configurations

 ajouter une nouvelle configuration—>distant

Configuration:

Lancez le débogage :

Vous pouvez voir que le programme a entré un point d'arrêt.

3. Programme Web JAVA de débogage à distance

En tant que serveur Web couramment utilisé, Tomcat prend naturellement en charge la fonction de débogage à distance pour une utilisation facile. Les programmes java ordinaires sont démarrés avec java -jar, et tomcat est démarré avec un script de démarrage, qui enregistre toutes les commandes à exécuter au démarrage de tomcat, et le débogage à distance y est également écrit.

Modifiez start.sh dans l'environnement Windows et ajoutez la commande suivante à la première ligne :

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

Modifiez start.bat dans l'environnement Linux et ajoutez la commande suivante à la première ligne :

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

4. Programme de démarrage Spring de débogage à distance

En tant que jar, le projet de démarrage de printemps peut être débogué à l'aide de java -jar, puis en démarrant le débogage des programmes Java ordinaires avec des paramètres.De plus, le démarrage de printemps fournit également un moyen plus pratique de débogage à distance, qui est Configurer les paramètres dans le plug-in d'emballage de démarrage de printemps.

<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>

Je suppose que tu aimes

Origine blog.csdn.net/Joker_ZJN/article/details/132252506
conseillé
Classement