Eclipse : remote debugging avec JDPA

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.