Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       mtrace, muntrace - urmărire malloc

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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țăAtributValoare   │
       ├───────────────────────────────────────────────────────────────────────┼───────────────────┼───────────┤
       │ mtrace(), muntrace()                                                  │ Siguranța firelor │ MT-Unsafe │
       └───────────────────────────────────────────────────────────────────────┴───────────────────┴───────────┘

STANDARDE

       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);            /* Nu a fost eliberată niciodată - o scurgere de memorie */

               calloc(16, 16);             /* Nu a fost eliberată niciodată - 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   făcută   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.9.1                    2 mai 2024                                          mtrace(3)