Man page - muntrace(3)

Packages contains this manual

Available languages:

en fr ru ro

Manual

mtrace

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
ATTRIBUTS
STANDARDS
NOTES
BOGUES
EXEMPLES
VOIR AUSSI
TRADUCTION

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 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).

Image grohtml-3878044-1.png

STANDARDS

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 <stdio.h>
#include <stdlib.h>
int
main(void)
{
mtrace();
for (unsigned int j = 0; j < 2; j++)
malloc(100); /* Jamais libéré -- une fuite mémoire */
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)

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>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 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 .