vendredi 4 mai 2007

Détection des 'Memory Leaks' ou fuites mémoires (en C++)

Bonjour,

Ce message s'adresse à ceux qui ont suivis mon cours 'C++ Perfectionnement' : Nous avions évoqué en C++ la nécessité de suivre toutes les erreurs relatives à la gestion mémoire (à l'issue de la compilation).

Il existe bien évidemment l'outil IBM(tm) 'Purify'(tm) permettant le suivi de ces warnings ou erreurs. Cet outil est relativement cher et chacun ne dispose pas de cet outil.

Je vous propose de découvrir l'outil 'VALGRIND' disponible notamment sous linux et gratuit, permettant de découvrir notamment :
- les "memory leaks" (fuites mémoires)
- les accès en lecture ou écriture aux zones mémoires non initialisées

L'outil est disponible : soit dans vos paquets linux, soit sur le site : http://valgrind.org/

L'outil se lance en 'ligne de commande' avec une syntaxe du type :

$ valgrind -v ./a.out (ici l'exécutable compilé et lié se nomme "a.out")

L'outil vous sort à l'issue de cette exécution son rapport en mode texte, il est vrai que le rapport est quelque peu 'verbeux'.

Un extrait de rapport de l'outil ci-dessous nous permet de distinguer une fuite mémoire sur le tas de 400 octets :
==12377== LEAK SUMMARY:
==12377== definitely lost: 400 bytes in 1 blocks.
==12377== possibly lost: 0 bytes in 0 blocks.
==12377== still reachable: 0 bytes in 0 blocks.
==12377== suppressed: 0 bytes in 0 blocks.
==12377== Use --leak-check=full to see details of leaked memory.



A très bientôt

1 commentaire:

  1. C'est tout ??
    Pas un petit mot sur "Apres cela , on va voir comment trouver la fuite de mémoire ".

    RépondreSupprimer