jammy (3) mtrace.3.gz

Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       mtrace, muntrace - Suivi de malloc

SYNOPSIS

       #include <mcheck.h>

       void mtrace(void);

       void muntrace(void);

DESCRIPTION

       La  fonction mtrace() installe des fonctions de rappel (« hook ») pour les fonctions d'allocation mémoire
       malloc(3), realloc(3)  memalign(3), et free(3). Ces fonctions de  rappel  enregistrent  l'historique  des
       allocations  et désallocations de mémoire. Ces informations permettent de découvrir des fuites mémoire ou
       des libérations de mémoire non allouée dans un programme.

       La fonction muntrace() désactive  les  fonctions  de  rappel  (« hook »)  installées  par  mtrace()  afin
       d'arrêter  l'enregistrement  des  appels  aux fonction d'allocation mémoire. Si aucune fonction de rappel
       n'était installée par mtrace(), muntrace() ne fait rien.

       Lors de l'appel à mtrace(), la valeur de la variable d'environnement MALLOC_TRACE est lue pour y  trouver
       le  chemin  du  fichier où enregistrer l'historique des appels. Si ce fichier est correctement ouvert, il
       est remis à zéro.

       Si MALLOC_TRACE n'est pas définie, ou si le chemin passé en paramètre est invalide ou ne  peut  pas  être
       écrit, alors aucune fonction de rappel (« hook ») n'est installé et mtrace() n'aura pas d'effet. Pour les
       programmes setuid ou setgid, MALLOC_TRACE est ignoré et mtrace() n'est pas d'effet.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌─────────────────────┬──────────────────────┬───────────┐
       │InterfaceAttributValeur    │
       ├─────────────────────┼──────────────────────┼───────────┤
       │mtrace(), muntrace() │ Sécurité des threads │ MT-Unsafe │
       └─────────────────────┴──────────────────────┴───────────┘

CONFORMITÉ

       Ces fonctions sont des extensions GNU.

NOTES

       En utilisation habituelle, mtrace() est appelé  une  fois  au  début  de  l'exécution  du  programme,  et
       muntrace() n'est jamais appelé.

       La  sortie produite lors d'un appel à mtrace() est sous forme de texte, mais n'a pas été prévue pour être
       lisible par un humain.  La  bibliothèque  GNU  C  fournit  un  script  Perl,  mtrace(1),  qui  interprète
       l'enregistrement  des  appels  mémoire  et  affiche  une  sortie lisible. Pour de meilleurs résultats, le
       programme instrumenté devrait être compilé avec les symboles de débogage, afin que les numéros  de  ligne
       soient inscrits dans l'exécutable.

       Le suivi des appels d'allocation mémoire effectué par mtrace() pénalise les performances.

BOGUES

       Le  numéro  de ligne indiqué par mtrace(1) n'est pas toujours précis : il peut faire référence à la ligne
       de code (non vide) précédente ou suivante.

EXEMPLES

       L'exemple de session suivant montre comment utiliser la fonction mtrace() et la commande  mtrace(1)  dans
       un programme qui renferme des fuites mémoire à deux endroits différents.

           $ cat t_mtrace.c
           #include <mcheck.h>
           #include <stdlib.h>
           #include <stdio.h>

           int
           main(int argc, char *argv[])
           {
               mtrace();

               for (int j = 0; j < 2; j++)
                   malloc(100);            /* Never freed--a memory leak */

               calloc(16, 16);             /* Jamais libéré -- une fuite mémoire */
               exit(EXIT_SUCCESS);
           }

       Lorsque  ce  programme  est  exécuté  comme  ci-dessous,  mtrace() diagnostique des fuites mémoire à deux
       endroits différents.

           $ cc -g t_mtrace.c -o t_mtrace
           $ export MALLOC_TRACE=/tmp/t
           $ ./t_mtrace
           $ mtrace ./t_mtrace $MALLOC_TRACE
           Memory not freed:
           -----------------
              Address     Size     Caller
           0x084c9378     0x64  at /home/cecilia/t_mtrace.c:12
           0x084c93e0     0x64  at /home/cecilia/t_mtrace.c:12
           0x084c9448    0x100  at /home/cecilia/t_mtrace.c:16

       Les deux premiers messages liés à la mémoire non libérée correspondent aux deux appels à  malloc(3)  dans
       la boucle for. Le dernier message correspond à l'appel calloc(3) (qui à son tour appelle malloc(3)).

VOIR AUSSI

       mtrace(1), malloc(3), malloc_hook(3), mcheck(3)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier   <barbier@debian.org>   et   David   Prévot
       <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à la  GNU  General  Public  License
       version 3   ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les  conditions  de  copie  et  de
       distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org ⟨⟩.