Vous pouvez également envoyer un signal à la machine virtuelle Java pour exécuter Thread.getAllStackTraces() sur un processus Java en cours d'exécution en envoyant un signal QUIT au processus.
Sur Unix/Linux utilisent:
kill -QUIT process_id
, où id_processus est le numéro de processus de votre programme Java.
Sous Windows, vous pouvez appuyer sur Ctrl-Pause dans l'application, bien que vous ne voyiez généralement rien à moins que vous n'effectuiez un processus de console.
JDK6 introduit une autre option, la commande jstack, qui affiche la pile de tout processus JDK6 en cours d'exécution sur votre ordinateur:
jstack [-l] <pid>
Ces options sont très utiles pour les applications qui sont en cours d'exécution dans un environnement de production et ne peut pas être modifié facilement. Ils sont particulièrement utiles pour diagnostiquer les blocages d'exécution ou les problèmes de performance.
http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/ http://java.sun.com/javase/6/docs/technotes/tools/share/jstack.html
Il est probablement préférable d'utiliser un outil de débogage existant. Il y en a beaucoup, et vous pouvez passer ce temps à travailler sur le projet au lieu de réinventer quelque chose. Sauf si vous vous amusez à écrire un débogueur, bien sûr. –