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

GTK+ Discussion :

Fuites de mémoire : comment utiliser valgrind


Sujet :

GTK+

  1. #1
    IMS
    IMS est déconnecté
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Fuites de mémoire : comment utiliser valgrind
    Bonjour,

    Maintenant que j'ai une belle application Gtk j'aimerai bien vérifier d'où proviennent les fuites mémoires (consommation incrémentale de la mémoire lorsque mon appli tourne !)

    Par conséquent j'ai mis en place valgrind en utilisant le fichier de suppression recommandé sur le site http://live.gnome.org/Valgrind (suite au travail de Johan Dahlin)
    Le résultat est bien mais pas extraordinaire => j'ai toujours beaucoup de memory leak dues à Gtk

    Après pas mal de recherches je suis tombé sur le fichier utilisé par les développeurs de chromium : http://src.chromium.org/svn/trunk/sr...ppressions.txt
    J'ai supprimé les parties 2 et 3 mais là encore il reste pas mal de fuite de mémoire du style :
    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
     
    ==15149== 5,912 (512 direct, 5,400 indirect) bytes in 2 blocks are definitely lost in loss record 7,037 of 7,064
    ==15149==    at 0x4025016: realloc (vg_replace_malloc.c:525)
    ==15149==    by 0x4B6F966: ??? (in /usr/lib/libfontconfig.so.1.4.4)
    ==15149==    by 0x4B703C4: ??? (in /usr/lib/libfontconfig.so.1.4.4)
    ==15149==    by 0x4B70B1B: ??? (in /usr/lib/libfontconfig.so.1.4.4)
    ==15149==    by 0x4B70B5F: ??? (in /usr/lib/libfontconfig.so.1.4.4)
    ==15149==    by 0x4B63019: FcDefaultSubstitute (in /usr/lib/libfontconfig.so.1.4.4)
    ==15149==    by 0x4A1EB67: ??? (in /usr/lib/libpangocairo-1.0.so.0.2800.0)
    ==15149==    by 0x49DC867: ??? (in /usr/lib/libpangoft2-1.0.so.0.2800.0)
    ==15149==    by 0x49DFB74: ??? (in /usr/lib/libpangoft2-1.0.so.0.2800.0)
    ==15149==    by 0x4AB5ED5: pango_font_map_load_fontset (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x4AB38B4: ??? (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x4AB3F66: pango_itemize_with_base_dir (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x4ABCD3C: ??? (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x4ABE393: ??? (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x49DB2B8: pango_fc_font_create_metrics_for_context (in /usr/lib/libpangoft2-1.0.so.0.2800.0)
    ==15149==    by 0x4A1E593: ??? (in /usr/lib/libpangocairo-1.0.so.0.2800.0)
    ==15149==    by 0x4A1AC80: ??? (in /usr/lib/libpangocairo-1.0.so.0.2800.0)
    ==15149==    by 0x4AAC1C7: pango_font_get_metrics (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x4ABA09B: ??? (in /usr/lib/libpango-1.0.so.0.2800.0)
    ==15149==    by 0x4ABA519: pango_layout_line_get_extents (in /usr/lib/libpango-1.0.so.0.2800.0)
    Est ce que vous utilisez un autre outil que valgrind ou est ce que quelqu'un a un fichier de suppression qui soit plus complet que ceux cités ?

    Mes tests me donnent un fichier de log de :
    1845 ko si aucun fichier de suppression
    409 ko avec le fichier de Johan Dahlin
    268 ko avec le fichier utilisé pour chromium

    Dernières infos : les librairies utilisées sont gtk2.16, glib2.22, pango 1.26 cairo 1.8

    Merci de me donner un retour de vos expériences car le sujet n'est pas très documenté !

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    Sans apporter de meilleure réponse j'ai la même utilisation que toi de Valgrind. Je me concentre sur les noms de mes propres fonctions en essayant de ne pas trop lire le reste.

    Maintenant je m'essaye à utiliser Alleyop. C'est un lecteur de log pour Valgrind. Il les trie et les classe par type. C'est déjà plus lisible. Il y a un bouton "éxécuter" mais chez moi il est inopérant. Pour info je suis sous Ubuntu 10.04 i386.

  3. #3
    IMS
    IMS est déconnecté
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Merci je vais tester çà demain si çà veut bien fonctionner car je suis également sous Ubuntu 10.04 i386

    J'ai souhaité faire un rapide résumé de mes recherches pour ceux qui passerait par le forum. Franchement y'a pas grand chose sur le sujet et se taper des milliers de lignes de code c'est vraiment pas le plus pro...

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    Je suis bien d'accord. Maintenant il est vrai que Valgrind apporte une aide à l'optimisation non négligeable.
    Pour continuer sur le même sujet il existe aussi Valkyrie qui utilise la lib Qt. Mais ca c'est du détail. Il est beaucoup plus complet que Alleyop. Mais j'avoue que pour l'instant j'ai vraiment du mal à m'en servir.

Discussions similaires

  1. Réponses: 31
    Dernier message: 19/09/2011, 10h37
  2. Fuites mémoires : comment trouver
    Par stof dans le forum Visual C++
    Réponses: 16
    Dernier message: 29/02/2008, 10h58
  3. [débutant] comment éviter les fuites de mémoire ?
    Par dahtah dans le forum Général Java
    Réponses: 6
    Dernier message: 13/03/2007, 17h40
  4. [MFC] Comment corriger ces fuites de mémoire
    Par Philippe320 dans le forum MFC
    Réponses: 8
    Dernier message: 07/03/2006, 13h50
  5. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44

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