Le code C++ de la dépendance / appel-graphique “spectateur”?
est-il une telle chose comme un (gratuit) outil qui permettrait d'afficher un graphique de toutes les fonctions dans un appel d'une fonction donnée?
Par exemple, si je l'utilise sur un complexe de la fonction fun() j'essaie de comprendre, qu'il allait me montrer toutes les fonctions appelées par fun() dans l'ordre, alors que j'aurais la possibilité de voir la même chose pour la fonction qui est appelée par fun(), et ainsi de suite.
Je suis à la recherche de ce pour le code C++.
Est-ce une telle chose existe même?
edit : je suis avec VS 2008 si cela aide, mais je pensais que ce logiciel permet de travailler sur les fichiers de la source de toute façon
Eh bien, vous n'avez pas besoin de très intelligent heuristiques. Un cut-off à deux ou trois niveaux de profondeur serait suffisant. Évidemment on ne peut pas tout montrer de
main
vers le bas. Le principal problème que je vois est virtual
fonctions, d'où la mise en œuvre effective est déterminée au moment de l'exécution.double possible de des Outils pour obtenir une pictural de l'appel de fonction graphique de code
OriginalL'auteur lezebulon | 2012-03-09
Vous devez vous connecter pour publier un commentaire.
Doxygen pouvez le faire. Voir la
CALL_GRAPH
option de configuration:OriginalL'auteur Greg Hewgill
Oui, Eclipse CDT Hiérarchie D'Appel vue offre exactement cela. En outre, ce point de vue a 2 options:
Que vous posez sur la deuxième, mais je suis préfère le premier dans l'analyse de code.
OriginalL'auteur ks1322
Intel(R) Événement Unique de l'API est gratuit projet open-source qui utilise GraphVis pour appel-graphique de visualisation. Il faut un peu de travail manuel ou le compilateur instrumentation automatisée, mais à côté des statistiques et des graphiques, vous obtiendrez les heures supplémentaires points de vue.
OriginalL'auteur araud
Oui de telles choses existent. Google sous la rubrique d'analyse de code statique. Il y a, par exemple, des outils tels que Comprendre, et il est fort probable que votre compilateur peut le faire aussi pour laquelle je vous renvoie à sa documentation.
J'utilise surtout le processeur Intel compilateur Fortran, mais Intel compilateurs C/C++ peut également produire de l'appel-graphiques. Mais Doxygen, comme suggéré par Greg, est probablement une meilleure réponse.
Comment peut-Doxygen être une meilleure réponse, si a) il existe des surcharges ou de l'héritage multiple (ce qui, Doxygen fait un plein Koenig de recherche?) ou indirectement un appel de fonction?
OriginalL'auteur High Performance Mark
Vous pouvez utiliser callgrind, et c'est l'outil GUI kcachegrind.
OriginalL'auteur BЈовић
Je ne sais pas de n'importe quel outil spécialement conçu pour cela. Cependant, il ya quelques façons de le faire:
OriginalL'auteur dsign
g++ et la plupart des compilateurs pouvez faire ce que vous voulez. Il est appelé profilage. Il y a aussi le oprofile. Un profiler vous donne le graphe d'appel d'une demande
after
son exécution. Ceci est très utile pour étudier le code, vous pouvez également vous promener à travers les [debug] sortie que vous regardez le graphique. Un analyseur de code, en revanche, vous donnera tous les possibles chemins toutefois, vous ne serez pas en mesure de voir l'important chemin facilement.L'analyse statique?
Mais le profilage ne montrent ces graphiques d'appel, qui sont réellement exécuté, pas de "tous les possibles".
Je crois profiler est suffisant pour comprendre le code. Il est simple et rapide à faire et vous donner l'idée de base. Doxygen de sortie peut être salissant pour les grands graphes.
OriginalL'auteur perreal
VC++2008/2010 du générateur de profils entre autres le fichier *CallerCalleeSummary.csv, qui contient cette information. Et c'est le lien vers l'article expliquant comment l'utiliser avec le programme exemple: Le profilage des Applications C++ dans Visual Studio
OriginalL'auteur SChepurin