Journal Générateur de graphes d'appels de fonctions

Posté par  .
Étiquettes : aucune
0
25
juin
2008
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.html

Je 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 :)
  • # amusant

    Posté par  . Évalué à 2.

    À voir les captures d'écran que tu donnes en exemple sur ton blog, ça donne vraiment très envie de faire mumuse avec un logiciel de ce genre

    Quels sont les noms des logiciels libres permettant de réaliser la même chose (et si possible, qui ne gèrent pas seulement qu'un sous-ensemble du c, mais aussi d'autres langages) ? Parce que j'ai vraiment très envie d'essayer.

    En tout cas, merci de m'avoir fait découvrir ça.
    • [^] # Re: amusant

      Posté par  . Évalué à 1.

      Pareil, la même chose pour d'autres langages (Perl et PHP) m'intéresserait beaucoup :-)
    • [^] # Re: amusant

      Posté par  . Évalué à 2.

      https://linuxfr.org/~cykl/12505.html ca date de 2004; y'a du avoir des progrès depuis. Cela dit cgprof marchait vraiment très bien à l'époque.
    • [^] # Re: amusant

      Posté par  . Évalué à 9.

      Quels sont les noms des logiciels libres permettant de réaliser la même chose

      Doxygen sort des graphes du même style avec l'option HAVE_DOT activée. Y'a aussi moyen de faire des graphes d'héritage, des graphes de collaboration de classes, etc.
  • # alt

    Posté par  . Évalué à 2.

    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.
  • # Dans le même genre

    Posté par  . Évalué à 3.

    Hier, je cherchais comment utiliser l'options -finstrument-functions de gcc et je suis tombé sur ce lien : http://www-128.ibm.com/developerworks/linux/library/l-graphv(...)

    C'est assez différent puisque ça fait un graphe d'appels suite à une exécution et non un graphe d'appels statiques. À la vue des images données en exemple, il y a une idée que tu pourrais leur reprendre. C'est celle de l'utilisation de label sur les transitions pour indiquer le nombre d'appels. Ça te permettrait d'alléger le graphes.

    Bon, c'est pas tout ça, j'ai un deadlock à éradiquer
  • # cflow2vcg

    Posté par  . Évalué à 2.

    désolé, j'ai pas le temps de développer ni de vérifier si c'est déjà passé:

    http://sourceforge.net/projects/cflow2vcg/

    à voir aussi

    http://savannah.nongnu.org/projects/cflow2cflow/
  • # au feu ! \o/

    Posté par  . Évalué à 2.

    Je voudrais juste signaler qu'il y a le feu à ton blog... là en bas à droite.
    La mise en place d'un pare-feu serait souaitable au risque d'enflammer tout l'internet.

    /o\
    • [^] # Re: au feu ! \o/

      Posté par  . Évalué à 1.

      Bien vu, c'est une photo de feu que j'ai modifiée. On m'a souvent demandé ce que c'est :)

      khorben

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.