2010-09-21 12 views
2

Pour disséquer/comprendre la base énorme de code modèle-lourd il serait vraiment utile d'avoir un outil qui me dit quelle classe/code l'a fait au binaire final. Par exemple, s'il y a deux classes A et B dans le code mais que je n'instancie que A, alors je voudrais savoir comment filtrer B. Y a-t-il des outils pour obtenir le même code?Comment faire pour filtrer le code intact en C++

+0

Ne devrait pas être étiqueté «préprocesseur», car le préprocesseur n'a aucun espoir de savoir s'il y a des cadavres qui traînent dans votre code. –

+0

Merci pour tous les pointeurs. Je pense que ce que je cherchais était un outils de couverture et gcov me sert plutôt bien. Je n'étais pas au courant avant. John, je suis d'accord avec toi. Le changerait en profileur. wilx, ne pouvait pas arriver à doxygen, mais je verrais bientôt. – Sandeep

Répondre

1

Utilisez des outils de couverture de profil/code. Certaines versions de MS Visual Studio sont livrées avec profiler. Ensuite, il existe plusieurs profileurs commerciaux/outils de couverture comme Intel VTune. Sur * nix avec GCC, il y a le gcov.

1

run doxygen pour générer le graphique de référence et quelle catégorie est non visé

0

Vous pouvez essayer d'utiliser nm:

L'nm utilitaire doit afficher symbolique informations figurant dans le fichier objet , exécutable fichier ou objet-fichier

bien que l'utiliser et patauger dans sa sortie n'est pas très amusant.

Dans une approche différente, n'est-il pas possible de commencer par parcourir/lire/comprendre le code de l'appelant pour noter les classes utilisées/incluses?

+0

de nombreux modèles seront inline et ne viendra pas en nm – Anycorn

+0

@aaa carpe Sandeep pourrait vouloir compiler sans optimisation, puis – dublev

0

Voir my answer à la question que j'ai posée récemment sur SO. L'idée est de compiler votre code après avoir activé l'option du compilateur "showIncludes", puis gérer la sortie pour extraire les informations dont vous avez besoin (manuellement ou automatiquement, en utilisant un script python, par exemple). En faisant cela, j'ai été capable d'extraire les fichiers de code qui sont utilisés pour construire notre logiciel.