Provided by: manpages-ro-dev_4.21.0-2_all 

NUME
mtrace, muntrace - urmărire malloc
BIBLIOTECA
Biblioteca C standard (libc, -lc)
REZUMAT
#include <mcheck.h>
void mtrace(void);
void muntrace(void);
DESCRIERE
Funcția mtrace() instalează funcții cârlig pentru funcțiile de alocare a memoriei (malloc(3), realloc(3)
memalign(3), free(3)). Aceste funcții cârlig înregistrează informații de urmărire despre alocarea și
eliberarea memoriei. Informațiile de urmărire pot fi utilizate pentru a descoperi scurgerile de memorie
și încercările de a elibera memoria nealocată într-un program.
Funcția muntrace() dezactivează funcțiile cârlig instalate de mtrace(), astfel încât informațiile de
urmărire nu mai sunt înregistrate pentru funcțiile de alocare a memoriei. În cazul în care nicio funcție
de cârlig nu a fost instalată cu succes de mtrace(), muntrace() nu face nimic.
Atunci când este apelată mtrace(), aceasta verifică valoarea variabilei de mediu MALLOC_TRACE, care ar
trebui să conțină numele rutei unui fișier în care urmează să fie înregistrate informațiile de urmărire.
În cazul în care numele rutei este deschis cu succes, acesta este trunchiat la lungimea zero.
Dacă MALLOC_TRACE nu este configurat sau dacă numele de rută pe care îl specifică nu este valid sau nu
poate fi scris, atunci nu sunt instalate funcții de cârlig, iar mtrace() nu are niciun efect. În
programele set-user-ID și set-group-ID, MALLOC_TRACE este ignorat, iar mtrace() nu are niciun efect.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
┌───────────────────────────────────────────────────────────────────────┬───────────────────┬───────────┐
│ Interfață │ Atribut │ Valoare │
├───────────────────────────────────────────────────────────────────────┼───────────────────┼───────────┤
│ mtrace(), muntrace() │ Siguranța firelor │ MT-Unsafe │
└───────────────────────────────────────────────────────────────────────┴───────────────────┴───────────┘
STANDARDE
Aceste funcții sunt extensii GNU.
NOTE
În mod normal, mtrace() este apelată o dată la începutul execuției unui program, iar muntrace() nu este
apelată niciodată.
Rezultatul de urmărire produs în urma unui apel la mtrace() este textual, dar nu este conceput pentru a
fi citit de oameni. Biblioteca GNU C oferă un script Perl, mtrace(1), care interpretează jurnalul de
urmărire și produce o ieșire care poate fi citită de oameni. Pentru cele mai bune rezultate, programul
urmărit trebuie compilat cu depanarea activată, astfel încât informațiile privind numerele de linie să
fie înregistrate în executabil.
Urmărirea efectuată de mtrace() implică o penalizare de performanță (dacă MALLOC_TRACE indică un nume de
rută valid și inscriptibil).
ERORI
Informația privind numărul de linie produsă de mtrace(1) nu este întotdeauna precisă: referințele la
numărul de linie se pot referi la linia anterioară sau următoare (fără spații libere) din codul sursă.
EXEMPLE
Sesiunea shell de mai jos demonstrează utilizarea funcției mtrace() și a comenzii mtrace(1) într-un
program care are pierderi de memorie în două locații diferite. Demonstrația utilizează următorul
program:
$ 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); /* Niciodată eliberată - o scurgere de memorie */
calloc(16, 16); /* Niciodată eliberată - o scurgere de memorie */
exit(EXIT_SUCCESS);
}
Când rulăm programul după cum urmează, observăm că mtrace() a diagnosticat pierderi de memorie în două
locații diferite din program:
$ cc -g t_mtrace.c -o t_mtrace
$ export MALLOC_TRACE=/tmp/t
$ ./t_mtrace
$ mtrace ./t_mtrace $MALLOC_TRACE
Memorie neeliberată:
-----------------
Adresa Dimens Apelant
0x084c9378 0x64 la /home/cecilia/t_mtrace.c:12
0x084c93e0 0x64 la /home/cecilia/t_mtrace.c:12
0x084c9448 0x100 la /home/cecilia/t_mtrace.c:16
Primele două mesaje despre memoria neliberată corespund celor două apeluri malloc(3) din interiorul
buclei for. Ultimul mesaj corespunde apelului la calloc(3) (care, la rândul său, apelează malloc(3)).
CONSULTAȚI ȘI
mtrace(1), malloc(3), malloc_hook(3), mcheck(3)
TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.03 15 decembrie 2022 mtrace(3)