Normalement pour joindre un debuger à une jvm vous devez lancer la jvm avec des arguments tels que le suivant:
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
Maintenant, si je veux déboguer un processus qui n'a pas été démarré en mode de débogage, que puis-je faire?
Cette situatoin arrises lorsqu'un système de production (ie commencé sans debug args) présente un "random" (j'utilise le terme faiblement) bug. Donc je ne peux pas redémarrer la machine avec les arguments appropriés, parce que personne ne sait comment reproduire le bug de nouveau. Est-il impossible de joindre à la JVM dans cette situation?
Juste pour préciser qu'il n'est pas possibel d'utiliser des outils comme jdb à joindre à déjà en cours d'exécution Jvm, sauf s'ils ont été démarré en mode de débogage
à partir de la JVM de l'homme page
Une autre façon d'utiliser jdb est en l'attachant à une machine virtuelle Java qui est déjà en cours d'exécution. Une machine virtuelle, c'est-à-être débogage avec jdb doit être lancé avec les l'une des options suivantes: