Débogage à distance avec IntelliJ IDEA

1. Introduction

Le débogage à distance donne aux développeurs la possibilité de diagnostiquer des bogues uniques sur un serveur ou un autre processus. Il permet de détecter ces bogues d'exécution ennuyeux et d'identifier les goulots d'étranglement des performances et les puits de ressources.

Dans ce didacticiel, nous examinerons le débogage à distance à l'aide de JetBrains IntelliJ IDEA. Préparons d'abord notre exemple d'application en modifiant la JVM.

2. Configurez la JVM

Nous utiliserons un exemple d'application de planificateur Spring pour vous connecter et ajouter facilement des points d'arrêt à une tâche planifiée régulièrement.

De plus, IntelliJ IDEA fournit nos paramètres JVM dans le cadre de la configuration :

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

2.1. Paramètres JVM

Outre la configuration du protocole JDWP (Java Debug Wire Protocol) - jdwp = transport = dt_socket - nous voyons les paramètres de serveur , de suspension et d' adresse .

Le paramètre server configure la JVM comme cible de notre débogueur. Le paramètre suspend indique à la JVM d'attendre qu'un client de débogage se connecte avant le démarrage. Enfin, le paramètre d' adresse utilise un hôte générique et un port déclaré.

Alors, construisons l'application du planificateur:

mvn clean package

Et maintenant, démarrons l'application, y compris le paramètre -agentlib: jdwp :

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \ target/gs-scheduling-tasks-0.1.0.jar

Ouvrez n'importe quel terminal et exécutez la commande. Avec notre application démarrée, passons maintenant à IntelliJ.

3. Exécutez la configuration dans IntelliJ IDEA

Ensuite, dans IntelliJ, nous créons une nouvelle configuration d'exécution pour le débogage à distance:

Maintenant que notre application est en cours d'exécution, commençons la session de débogage à distance en cliquant sur le bouton Déboguer .

4. Débogage à distance

Ensuite, nous ouvrons le fichier ScheduleTask et plaçons un point d'arrêt à la ligne 36 illustrée ici:

public void reportCurrentTime() { log.info("The time is now {}", dateFormat.format(new Date())); }

Étant donné que la tâche s'exécute toutes les cinq secondes, elle s'arrêtera peu de temps après son ajout. En conséquence, nous pouvons maintenant parcourir l'ensemble de l'application.

Pour les problèmes de démarrage d'application, nous changeons l' indicateur de suspension en n et plaçons un point d'arrêt dans la méthode principale d' Application.

4.1. Limites

Parfois, la journalisation et la sortie nous confondent lors du débogage à distance. Les journaux ne seront pas envoyés à la console IDE, de sorte qu'un fichier journal externe peut être utilisé et mappé dans l'EDI pour une capacité de débogage plus robuste.

Rappelez-vous également que si le débogage à distance est un outil très puissant, un environnement de production n'est pas une cible appropriée pour le débogage .

5. Conclusion

Comme nous l'avons vu dans cet article, le débogage à distance avec IntelliJ est facile à configurer et à utiliser en quelques étapes courtes.

Nous avons examiné comment configurer notre application JVM pour le débogage ainsi que certaines limitations de cet outil important dans notre boîte à outils de développement.

L'exemple d'application se trouve à l'adresse over sur GitHub.