.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2012 by Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mtrace 3 "20 juillet 2023" "Pages du manuel de Linux 6.05.01" .SH NOM mtrace, muntrace \- Suivi de malloc .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBvoid mtrace(void);\fP \fBvoid muntrace(void);\fP .fi .SH DESCRIPTION La fonction \fBmtrace\fP() installe des fonctions de rappel («\ hook\ ») pour les fonctions d'allocation mémoire \fBmalloc\fP(3), \fBrealloc\fP(3) \fBmemalign\fP(3), et \fBfree\fP(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. .PP La fonction \fBmuntrace\fP() désactive les fonctions de rappel («\ hook\ ») installées par \fBmtrace\fP() afin d'arrêter l'enregistrement des appels aux fonction d'allocation mémoire. Si aucune fonction de rappel n'était installée par \fBmtrace\fP(), \fBmuntrace\fP() ne fait rien. .PP Lors de l'appel à \fBmtrace\fP(), la valeur de la variable d'environnement \fBMALLOC_TRACE\fP 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. .PP Si \fBMALLOC_TRACE\fP 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 \fBmtrace\fP() n'aura pas d'effet. Pour les programmes \fIsetuid\fP ou \fIsetgid\fP, \fBMALLOC_TRACE\fP est ignoré et \fBmtrace\fP() n'est pas d'effet. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBmtrace\fP(), \fBmuntrace\fP() T} Sécurité des threads MT\-Unsafe .TE .sp 1 .\" FIXME: The marking is different from that in the glibc manual, .\" markings in glibc manual are more detailed: .\" .\" mtrace: MT-Unsafe env race:mtrace const:malloc_hooks init .\" muntrace: MT-Unsafe race:mtrace const:malloc_hooks locale .\" .\" But there is something wrong in glibc manual, for example: .\" glibc manual says muntrace should have marking locale because it calls .\" fprintf(), but muntrace does not execute area which cause locale problem. .SH STANDARDS GNU. .SH NOTES En utilisation habituelle, \fBmtrace\fP() est appelé une fois au début de l'exécution du programme, et \fBmuntrace\fP() n'est jamais appelé. .PP La sortie produite lors d'un appel à \fBmtrace\fP() 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, \fBmtrace\fP(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. .PP Le suivi des appels d'allocation mémoire effectué par \fBmtrace\fP() pénalise les performances. .SH BOGUES Le numéro de ligne indiqué par \fBmtrace\fP(1) n'est pas toujours précis\ : il peut faire référence à la ligne de code (non vide) précédente ou suivante. .SH EXEMPLES L'exemple de session suivant montre comment utiliser la fonction \fBmtrace\fP() et la commande \fBmtrace\fP(1) dans un programme qui renferme des fuites mémoire à deux endroits différents. .PP .in +4n .\" SRC BEGIN (t_mtrace.c) $ \fBcat t_mtrace.c\fP .EX #include #include #include \& int main(void) { mtrace(); \& for (unsigned int j = 0; j < 2; j++) malloc(100); /* Never freed\-\-a memory leak */ \& calloc(16, 16); /* Never freed\-\-a memory leak */ exit(EXIT_SUCCESS); } .EE .\" SRC END .in .PP Lorsque ce programme est exécuté comme ci\-dessous, \fBmtrace\fP() diagnostique des fuites mémoire à deux endroits différents. .PP .in +4n .EX $ \fBcc \-g t_mtrace.c \-o t_mtrace\fP $ \fBexport MALLOC_TRACE=/tmp/t\fP $ \fB./t_mtrace\fP $ \fBmtrace ./t_mtrace $MALLOC_TRACE\fP 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 .EE .in .PP Les deux premiers messages liés à la mémoire non libérée correspondent aux deux appels à \fBmalloc\fP(3) dans la boucle \fIfor\fP. Le dernier message correspond à l'appel \fBcalloc\fP(3) (qui à son tour appelle \fBmalloc\fP(3)). .SH "VOIR AUSSI" \fBmtrace\fP(1), \fBmalloc\fP(3), \fBmalloc_hook\fP(3), \fBmcheck\fP(3) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier et David Prévot . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .