Eclipse : remote debugging avec JDPA

Boris HUISGEN
Boris HUISGEN
|

Parfois, il est nécessaire de pouvoir tester son application et pouvoir la débugger débugger à distance. Pour conserver les mêmes conditions d’exécution, un debug distant depuis son IDE est possible.

Le principe est qu’une connexion réseau est faite entre le client de debug - son IDE - et le backend serveur - l’application à débugger -. Avec le langage Java, plus précisément sa JVM, cette fonctionnalité s’appelle JDPA pour Java Debug Architecture.

Deux méthodes d’accès JDPA sont possibles :

  • Socket attach : une socket est en écoute au niveau de la JVM. L’IDE va s’y connecter pour contrôler le flux d’exécution et récupérer les informations de debug.

  • Socket listen : une socket est en écoute au niveau de l’IDE. Dans ce cas-ci, la JVM s’y connecte pour pouvoir être contrôlée.

A l’usage, le choix entre les deux méthodes dépend étroitement de l’environnement et du filtrage réseau entre les deux postes. Outre la méthode, des options spécifiques sont à fournir à la JVM dont l’adresse IP et le port applicatif de la socket réseau.

Sous Eclipse, un remote debug par socket attach se fait ainsi :

  • Compilation des sources avec les options de debug

  • Déploiement et lancement de l’application sur l’hôte d’exécution avec les options JDPA :

$ java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 [...]
  • Lancement de la session de debug côté client (IDE) en précisant l’adresse IP et le port du serveur JDPA : menu Run -> Debug … -> Remote Java Application.

Le reste s’effectue comme un debug standard.

Boris HUISGEN
Boris HUISGEN
Blog owner
  • #eclipse
  • #java
  • #jdpa