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

C++ Discussion :

gprof et compilation


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Par défaut gprof et compilation
    Bonjour,
    Je découvre l'outil de "profilage" gprof.
    Je tente de l'utiliser mais je n'y parviens pas lorsque je
    dois "linker" avec une bibliothèque dynamique.

    Mon problème sur un exemple trivial.

    mon_header.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void passe_du_temps1();
    void passe_du_temps2();
    void passe_du_temps3();
    mon_header.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "mon_header.h"
    void passe_du_temps1()
    {
    	std::cout<<"Dans passe du temps 1\n";
    	int toto;
    	for (size_t i=0; i<100000000; i++)  toto = i+2;
    }
    idem pour les deux autres

    main.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "my_header.h"
     
    int main()
    {
    	passe_du_temps1();
    	for (size_t i=0; i<5; i++)  passe_du_temps2();
    	passe_du_temps3();
    }
    si je compile sans bibliothèque ca marche,
    je vois les appels des methodes en sortie de
    gprof:
    g++ -c mon_header.cpp main.cpp -pg
    g++ mon_header.o main.o -o main -pg

    si je passe par une lib. dyn., ca marche plus,
    je ne vois plus les appels des methodes:
    g++ -c mon_header.cpp main.cpp -pg
    g++ -shared mon_header.o -o ma_lib.so -pg
    g++ my_lib.so main.o -o main -pg

    Je ne comprends pas les quelques lignes de la doc ...
    Comment fait-on ?
    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par défaut
    As-tu essayé en compilant tes dll/so avec seulement l'option -g, et l'exécutable avec l'option -pg ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Par défaut
    Je viens d'essayer.
    Il n'y a aucune différence.
    Merci.

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par défaut
    Ca fonctionne chez moi pour des bibliothèques statiques, j'avais espéré que la méthode serait la même pour les bibliothèques dynamiques.

    J'ai cherché un peu sur le net et je suis tombé sur ce message : click.
    Il semblerait que gprof et gcc -pg ne fonctionnent pas avec les bibliothèques dynamiques...
    L'auteur du message propose un lien vers un comparatif de profiler (pour linux seulement je crois) : click.

    J'espère que ça t'aidera.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Par défaut
    Merci pour ta réponse.

    Je ne suis surpris par ce qui est dit sur le site qui correspond
    au premier click.

    Entre temps j'ai tenté oprofile.
    Mais j'ai eu un problème d'installation !!
    Je l'ai faites avec le logiciel aptitude pour ubuntu.
    Mais je suis tombé sur un bug d'installation qui a
    été corrigé pour les versions d'ubuntu plus récentes que
    la mienne. Il manquait un exécutable.

    Pas désespéré du tout j'ai installé valgrind. Je suis en train
    de l'utiliser et ça à l'air de marcher pas mal.

    Dès que j'ai un peu de temps je regarde ce qui est
    proposé dans ton deuxième click.

    Merci encore.

Discussions similaires

  1. Utiliser gprof sur un programme compilé avec Visual C++ 2005
    Par G3G3 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 31/01/2008, 22h50
  2. [Installation] Borland Compiler 5.5 sous XP
    Par Ligey dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 28/09/2002, 22h45
  3. dans le fond, la compilation...
    Par deltapositive dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/09/2002, 12h14
  4. Vitesse de compilation
    Par srvremi dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/07/2002, 16h49
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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