6
votes

Obtenir une hiérarchie d'appels en Java

J'ai des difficultés réelles traduisez un bug et cela aiderait à être beaucoup à savoir quelle méthode appelée méthode donnée. Y a-t-il un moyen facile d'obtenir une hiérarchie d'appels de Java? Java est une petite partie de l'application pour que je ne puisse pas compiler et gérer toute l'application dans les haricots Eclipse / Net, donc je n'ai pas accès à la hiérarchie des appels d'IDE Debugger.


4 commentaires

On dirait que vous voulez vraiment une trace de pile, pas une hiérarchie d'appel. (Est-il possible de modifier la matière d'une question?)


Une trace de pile est une hiérarchie d'appels à moins que je manque de différence subtile.


Une hiérarchie des appels est un arbre de tous les endroits qu'une procédure peut être appelée.


Je suis d'accord avec Stephen C, ce que vous parlez de ce que vous parlez s'appelle une trace de pile.


4 Réponses :


0
votes

Avez-vous essayé d'utiliser la capacité de débogage à distance de Java? Recherche Google pour vous aider à démarrer si vous n'avez pas


0 commentaires

15
votes
Exception ex = new Exception();
ex.printStackTrace();

0 commentaires

0
votes

La meilleure chose à faire est de jeter une exception, de l'attraper immédiatement et d'analyser la trace de la pile.

Je pense que c'est ainsi que Log4J est capable de connecter la méthode d'appel.


2 commentaires

avec fil.dumpstackstack () ou quelque si nécessaire de lancer une exception artificielle.


Vous êtes correct que c'est la façon dont log4j le fait. Je pense que c'est juste pour des raisons historiques cependant, depuis Java 1.5 la méthode actuelle. GetStackTrace () suggéré par Nelson est disponible pour que cette approche n'est plus nécessaire.



1
votes

Java est une petite partie de l'application pour que je ne puisse pas compiler et gérer toute l'application dans les haricots Eclipse / Net, donc je n'ai pas accès à la hiérarchie des appels d'IDE du débogueur.

Vous n'avez pas besoin d'exécuter l'application du tout. Si vous effectuez un projet en Eclipse, vous pouvez utiliser son outil Hiérarchie d'appel intégré pour trouver tous les endroits possibles qui appellent une méthode.

Il existe un compromis: l'outil Hiérarchie des appels vous donnera tous les endroits où est appelé une méthode. C'est un bon si vous voulez / besoin de connaître toutes les possibilités. Suggestion de Neslson de thread.CurrentThread (). GetStackTrace () vous donnera les endroits où une méthode est invoquée pendant le processus de votre programme pour cette invocation. La nuance est que vous ne pouvez pas courir à travers chaque chemin de code pendant cette invocation. Si vous voyez un comportement spécifique et que vous voulez savoir comment vous êtes arrivé là-bas, utilisez l'option getstacktrace () .


0 commentaires