dwww Home | Manual pages | Find package

mtrace(3)                  Library Functions Manual                  mtrace(3)

NOM
       mtrace, muntrace - Suivi de malloc

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

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 allo-
       cations 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 pro-
       grammes 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 │
       └───────────────────────────────────┴──────────────────────┴───────────┘

STANDARDS
       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 biblio-
       thèque GNU C fournit un script Perl, mtrace(1), qui interprète  l'enre-
       gistrement  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  sui-
       vante.

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 <stdio.h>
           #include <stdlib.h>

           int
           main(void)
           {
               mtrace();

               for (unsigned 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() diagnos-
       tique 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 cor-
       respond à l'appel calloc(3) (qui à son tour appelle malloc(3)).

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

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.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⟩.

Pages du manuel de Linux 6.03  15 décembre 2022                      mtrace(3)

Generated by dwww version 1.15 on Sat Jun 29 01:40:25 CEST 2024.