Liens connexes

Dépêche modérée par

: Recherche des bogues et fuites de mémoire

Posté par Benoît Sibaud (Jabber id, page perso, ). Modéré le 17 mars 2002.
0
Suite à une dépêche sur Slashdot à propos des fuites de mémoire dans Mozilla, et comme je cherchai un ersatz libre à Purify (de Rational), l'outil le plus connu pour la détection de bogues de mémoire, j'ai jeté un oeil aux divers projets sur le sujet que j'ai pu trouver (voir la pièce jointe).

Si quelqu'un les a déjà essayés ou connait leurs limites/avantages/inconvénients, je suis preneur.

dmalloc http://dmalloc.com/
ccmalloc http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/
Electric Fence (efence) http://perens.com/FreeSoftware/
Valgrind http://developer.kde.org/~sewardj/
Boehm Collector http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Parallel Collector on Message Passing Environment http://www.yl.is.s.u-tokyo.ac.jp/gc/dgc/
LeakTracer http://www.andreasen.org/LeakTracer/
MemWatch http://www.linkdata.se/sourcecode.html
Memprof http://people.redhat.com/otaylor/memprof/

> Lire les commentaires (52 commentaires, moyenne: 5,3).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

La pièce jointe qui n'est pas passée

Posté par Benoît Sibaud (Jabber id, page perso, ) le 17/03/2002 à 10:54. (lien). Évalué à 33.

LeakTracer
http://www.andreasen.org/LeakTracer/(...)
Fuites de mémoire
Linux et d'autres Unix
Domaine public
Sans recompilation
C++
Version 2.2

MemWatch
http://www.linkdata.se/sourcecode.html(...)
Fuites de mémoire
Domaine public
Nécessite une recompilation
C
Version 2.67

Memprof
http://people.redhat.com/otaylor/memprof/(...)
Profil de la mémoire allouée et détection des fuites (avec GUI)
GPL
C. C++ ?
Sans recompilation
Version 0.4.1

dmalloc
http://dmalloc.com/(...)
libre
Multi-plateforme
C/C++
Nécessite une recompilation
Supporte le multi-thread
Version 4.8.2

ccmalloc
http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/(...)
Fuites de mémoire et problèmes de mémoire
GPL
Linux et Solaris
Nécessite une recompilation
Version 0.3.9

Electric Fence (efence)
http://perens.com/FreeSoftware/(...)
GPL
Détection des dépassements de limites
C
Version 2.2.2

Valgrind
http://developer.kde.org/~sewardj/(...)
Problèmes de mémoire (dont fuites)
Pour x86 linux.
Sans recompilation
Pas de support multi-thread
C/C++
Disponible seulement en snapshot

Boehm Collector
http://www.hpl.hp.com/personal/Hans_Boehm/gc/(...)
Garbage collector et détecteur de fuites
Licence compatible Debian en tout cas
Multi-plateforme
C/C++

Parallel Collector on Message Passing Environment
http://www.yl.is.s.u-tokyo.ac.jp/gc/dgc/(...)
Licence inconnue (pas de téléchargement)
Adresse de téléchargement invalide

Tests persos

Posté par Gnurou (page perso, ) le 17/03/2002 à 11:10. (lien). Évalué à 25.

Des outils de ce genre sont indispensables dès qu'on commence à manipuler des grosses quantités de mémoire dynamique. J'ai été amené à en utiliser quelques uns:

-electric fence: sans doute le plus connu/utilisé. Il marque les zones mémoires libérées de telle sorte que si on essaie de lire à un endroit libéré, le programme plante à coup sûr. Après, un coup de gdb suffit à repérer l'erreur. Inconvénient: la mémoire ne peut être utilisé qu'une fois. Autant dire qu'avec un gros programme, il en faut des quantités pharaoniques...

-memprof: petit outil très sympa écrit en Gtk. Pas besoin de linker avec quoi que ce soit. Il affiche les leaks qu'il a trouvés et sert aussi de profiler. C'est sans doute l'outil qui m'a permis d'en repérer le plus - le plus sympa à utiliser aussi. Par contre, ca fait un bail qu'il n'a pas été mis à jour...

-je n'ai jamais utilisé Valgrind, mais il a une très bonne réputation. Notamment celle d'etre utilisé pour KDE.

Pour le reste, je ne connais pas vraiment. La news m'en a fait découvrir quelques uns. D'après des potes Windowsiens, aucun de ces outils n'est aussi bon que Purify, que je n'ai jamais testé personnellement, il m'est donc impossible de me prononcer. En tout cas, je me suis toujours passé de Purify, et tous ces outils me satisfont pleinement...

Je vote pour cette news en première page [++++]

Posté par alenvers () le 17/03/2002 à 12:49. (lien). Évalué à 5.

Je vote pour cette news en première page [++++]. S'il vous plait un peu de news techniques en première page.

Voici un peu plus de détail du pourquoi de ce post :
http://linuxfr.org/comments/thread.php3?news_id=7554&com_id=102(...)

-1.

fonctions de la libc

Posté par Antoine Ameurlain (page perso, ) le 17/03/2002 à 15:17. (lien). Évalué à 19.

Il y a aussi des fonctionnalités propres à la libc. Pour plus d'information, reportez vous à la doc : info libc (installez le paquet glibc-doc)
Memory -> Memory Allocation -> Allocation Debugging

En gros, vous appelez une fonction mrtrace() au début de votre programme. Et vous définissez une variable d'environnement MALLOC_TRACE qui contiendra le nom d'un fichier où vous allez logguer les traces.
Pour de petits programmes, ça vaut peut-être le coup d'utiliser ça.

--
www.beopen.fr
l'esprit libre

[+] au XXI ème siècle ?

Posté par Dugland Bob (page perso, ) le 17/03/2002 à 17:09. (lien). Évalué à -13.

Y'a toujours des dinos pour programmer en C ...

c'est marrant, Smalltalk normalisé en 1980 n'a pas ce problème.

j'ai ma petite liste d'outils à moi :
Lisp
Scheme
Smalltalk
O' caml
objective C
Java
Perl
Python
Haskell
...

à compléter

Le premier qui me parle de GC en C ou en C++ je l'éclate ; je parle de vrais outils !

Revenir en haut de page