Journal : Générateur de graphes d'appels de fonctions
Posté par Pierre Pronchery (page perso, ) le 25 juin 2008
0
La dépêche récente sur CodeSwarm m'a fait penser que ceci pourrait en intéresser. Je travaille sur un générateur de graphes d'appels de fonctions (en C pour du C). Quelques résultats sont visibles sur mon blog: http://people.defora.org/~khorben/200806.htmlJe pourrais même écrire de la documentation si demandé. Les limitations actuelles comprennent:
- le pré-processeur n'est pas fini (notamment #if, les substitutions, et les commentaires dans les directives)
- en conséquence, seuls les en-têtes (encore incomplets) de ma libc sont supportés (à ma connaissance)
- fonctionne mieux sur NetBSD, puis Linux, puis FreeBSD ou OpenBSD, puis Solaris
Tout le nécessaire se trouve dans le CVS de mon projet d'OS (un de plus):
$ cvs -d:pserver:anonymous@cvs.defora.org:/Data/CVS co DeforaOS
Il faut notamment, dans l'ordre: System/src/libSystem, Apps/Devel/src/cpp, Apps/Devel/src/as, Apps/Devel/src/c99.
Le grapheur est un module du compileur, choisi avec "c99 -M graph". Il génère des fichiers au format "dot" pour conversion avec graphviz.
Je conseille d'installer mes binaires en dehors d'un chemin du $PATH, sinon gcc risque ne va plus trouver ses petits (notamment cpp et as).
Pour conclure, je reconnais qu'il existe déjà des logiciels libres pour le faire. En plus, une bonne partie de mon code n'est pas libre pour l'instant. Mais c'était "facile" à faire avec le design ambitieux de mon compileur C (multi-OS et multi-plateformes par défaut notamment).
Merci d'avoir suivi cette auto-promotion :)
> Lire le journal (12 commentaires, moyenne: 2,7).
Vous avez demandé le commentaire #943901.



alt
Puisqu'il est fait allusion à d'autres outils libres pour le faire, je me permet de citer egypt ( http://www.gson.org/egypt/egypt.html ) qui fonctionne également très bien.
[^]Re: alt
J'avais développé mon outil pour tracer les dépendances (inclusions de modules) d'un programme :
http://haypo.hachoir.org/trac/wiki/graphdep
C'était pour le fun et pour tester le bibliothèque GvGen d'un ami. D'ailleurs, GvGen simplifie beaucoup l'utilisation de GraphViz ! Sinon, pour revenir aux graphes d'appel, il existe aussi ncc :
http://students.ceid.upatras.gr/~sxanth/ncc/