IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres éditeurs Discussion :

Aide pour génération de graphes d'appel


Sujet :

Autres éditeurs

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Aide pour génération de graphes d'appel
    Bonjour,

    Je suis à la recherche d'outils pour créer des graphes de fonctions et d'appels système à l'intérieur d'un programme écrit en C.

    J'ai trouvé un lien intéressant mais je n'arrive pas à faire marcher la manipulation... si quelqu'un pouvait m'aider je lui en serait reconnaissant.

    Voici le lien:
    http://209.85.135.104/search?q=cache...lnk&cd=1&gl=fr

    C'est surtout cette partie .. je ne sais pas trop ce qu'il faut faire.
    Ne pas oublier de mettre en locale LC_ALL=C
    Sinon le retour de gprof est inexploitable.
    Merci de votre aide.

    PS: Si vous connaissez d'autres outils qui permettent de générer des graphes, je suis aussi preneur (qu'ils analysent le code C ou même les binaires)

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Sous linux et bash, il suffit de faire ceci:

    Jc

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Re:
    Merci pour la réponse.

    Malheureusement je n'arrive toujours pas à faire fonctionner la manipulation et à dessiner quelque chose de consistant avec dot; j'ai seulement un petit carré blanc vide.

    J'ai fait le test sur un programme bidon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    // Le but de ce TD est de comprendre la diff�ence entre
    // passage par valeur et par adresse.
    // En plus, on exp�imente l'allocation dynamique et aussi le calcul de
    // pointeurs (on ajoute �un pointeur une valeur, ce qui provoque son
    // d�alage).
    #include <stdio.h>
    void par_valeur(int a)
    {
      printf("entier recu: %i\n", a);
      a++;
      printf("entier modifi� %i\n", a);
    }
    void par_adresse(int * a)
    {
      printf("entier recu: %i\n", *a);
      (*a)++;
      printf("entier modifi� %i\n", *a);
    }
    void affiche_n(int * tab, int n)
    {
      int i;
      for (i=0;i<n;i++)
        printf("tab[%i]=%i\n", i, tab[i]);
    }
    int main(int argc, char ** argv)
    {
      int i = 12;
      int tableau[10] = {1,2,3,8,9,10,554,654,5544,744};
      int * tableau_dynamique;
      int j;
      size_t nb_case;
      int num_case;
      // Exercice 1
      printf("entier avant fonction par_valeur: %i\n", i);
      par_valeur(i);
      printf("entier apr� fonction par_valeur: %i\n", i);
      // Exercice 2
      printf("entier avant fonction par_adresse: %i\n", i);
      par_adresse(&i);
      printf("entier apr� fonction par_adresse: %i\n", i);
      // Exercice 3,4,5,6
      affiche_n(tableau,9);
      par_valeur(tableau[5]);
      affiche_n(tableau+5,3);
      // Exercice 7
      printf("Nombre de cases �allouer ? ");
      scanf("%i", &nb_case);
      tableau_dynamique = (int *)calloc(nb_case, sizeof(int));
      for (j=0; j<nb_case; j++)
        tableau_dynamique[j] = j;
      affiche_n(tableau_dynamique, nb_case);
      free(tableau_dynamique);
      // Exercice 8
      for (j=0; j<100000; j++)
      {
        // Dangereux, surtout sans free !!!
        //tableau_dynamique = (int *)calloc(10000, sizeof(int));
      }
      // Exercice 9
      printf("Quelle case afficher ? ");
      scanf("%i", &num_case);
      printf("Valeur de la case %i: %i\n", num_case, (*(tableau_dynamique+num_case)));
    }
    En utilisant un autre programme: cflow j'ai pourtant obtenu un arbre d'appels de fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    cflow td3-solution.c
    main() <int main (int argc,char **argv) at td3-solution.c:31>:
        printf()
        par_valeur() <void par_valeur (int a) at td3-solution.c:10>:
            printf()
        par_adresse() <void par_adresse (int *a) at td3-solution.c:17>:
            printf()
        affiche_n() <void affiche_n (int *tab,int n) at td3-solution.c:24>:
            printf()
        scanf()
        calloc()
        free()
    Je ne sais pas quelle erreur j'ai bien pu faire dans la manipulation...
    Pouvez-vous m'aider à représenter cet arbre d'appels dans un graphe avec dot?

    Merci de votre aide.

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par ballrog64
    Merci pour la réponse.

    Malheureusement je n'arrive toujours pas à faire fonctionner la manipulation et à dessiner quelque chose de consistant avec dot; j'ai seulement un petit carré blanc vide.
    Ben faut regarder chaque étape et comprendre ce qui se passe exactement...

    Jc

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Expert Labview et bancs de test
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expert Labview et bancs de test
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Points : 5
    Points
    5
    Par défaut je me suis développé le mien...
    voici le lien:

    http://yves.maguer.free.fr/callgraf/graf_appel.html

    Vous pouvez m'envoyer par mail des matrices, s'il n'y en a pas trop, je vous renverrai les graphes d'appel....

Discussions similaires

  1. Bibliothèque pour Génération de graphes
    Par geforce dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 05/05/2011, 22h18
  2. Cherche outil Flash pour génération de graphes
    Par kileak dans le forum Flash
    Réponses: 1
    Dernier message: 21/01/2011, 14h46
  3. Aide pour génération d'un flux xml
    Par toams69 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 24/04/2008, 09h57
  4. tutorial - aide pour tracer un graph ?
    Par Slumpy dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/07/2007, 10h35
  5. [Vb.net] Besoin d'aide pour générer des graphs
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/12/2006, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo