Table des matières
1. Qu'est-ce que le débogage à distance ?
2. Programme JAVA ordinaire de débogage à distance
commande de démarrage du programme
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 poury
indiquer oui.suspend
: Spécifiez s'il faut faire une pause au démarrage, utilisern
signifie 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>