Est-il possible d'attacher le débogueur IntelliJ IDEA à un processus en cours d'exécution Java? Si oui comment?
Oui! Voici comment vous le configurez.
Créez une configuration d'exécution à distance:
La configuration ci-dessus fournit trois champs en lecture seule. Ce sont des options qui indiquent à la JVM d'ouvrir le port 5005 pour le débogage distant lors de l'exécution de votre application. Ajoutez celui qui convient aux options de la machine virtuelle Java de l’application que vous déboguez. Une façon de faire serait la suivante:
export Java_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
Mais cela dépend de la manière dont vous exécutez votre application. Si vous ne savez pas lequel des trois vous concerne, commencez par le premier et descendez dans la liste jusqu'à trouver celui qui vous convient.
Vous pouvez modifier suspend=n
en suspend=y
pour forcer votre application à attendre jusqu'à ce que vous vous connectiez à IntelliJ avant de démarrer. Ceci est utile si le point d'arrêt que vous souhaitez atteindre survient au démarrage de l'application.
Démarrez votre application comme vous le feriez normalement, puis dans IntelliJ, sélectionnez la nouvelle configuration et cliquez sur "Déboguer".
IntelliJ se connectera à la machine virtuelle Java et lancera le débogage à distance.
Vous pouvez maintenant déboguer l'application en ajoutant des points d'arrêt à votre code à l'endroit souhaité. La sortie de l'application apparaîtra toujours là où elle était auparavant, mais vos points d'arrêt atteindront dans IntelliJ.
C'est possible, mais vous devez ajouter des indicateurs JVM lorsque vous démarrez votre application.
Vous devez ajouter une configuration de débogage distant: Modifiez la configuration -> Distant.
Ensuite, vous trouverez dans la fenêtre de dialogue affichée les paramètres que vous devez ajouter à l'exécution du programme, comme:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Ensuite, lorsque votre application est lancée, vous pouvez attacher votre débogueur. Si vous voulez que votre application attende que le débogueur soit connecté, il suffit de changer l'indicateur de suspension en y (suspend=y
)
dans AndroidStudio ou idée
ajouter "Options VM" Config “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”
Mémoriser "adresse"
En outre, n'oubliez pas que vous devez ajouter l'indicateur "-Xdebug" dans l'application Java_OPTS si vous souhaitez vous connecter en mode débogage.
Aussi, j'utilise l'application Tomcat GUI (dans mon cas: C:\Tomcat\bin\Tomcat9w.bin).
Accédez à l'onglet Java :
Définissez vos propriétés Java, par exemple:
machine virtuelle Java
C:\Program Files\Java\jre-10.0.2\bin\server\jvm.dll
machine virtuelle Java
C:\Tomcat\bin\bootstrap.jar; C:\Tomcat\bin\Tomcat-juli.jar
Options Java :
-Dcatalina.home = C:\Tomcat
-Dcatalina.base = C:\Tomcat
-Djava.io.tmpdir = C:\Tomcat\temp
-Djava.util.logging.config.file = C:\Tomcat\conf\logging.properties
-agentlib: jdwp = transport = dt_socket, serveur = y, suspendre = n, adresse = *: 8000
options Java 9 :
--add-opens = Java.base/Java.lang = ALL-UNNAMED
--add-opens = Java.base/Java.io = ALL-UNNAMED
--add-opens = Java.rmi/Sun.rmi.transport = ALL-UNNAMED