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

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țăAtributValoare   │
       ├─────────────────────────────────────────────────────────┼───────────────────┼───────────┤
       │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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.