.\" -*- 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 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME mtrace, muntrace \- urmărire malloc .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBvoid mtrace(void);\fP \fBvoid muntrace(void);\fP .fi .SH DESCRIERE Funcția \fBmtrace\fP() instalează funcții cârlig pentru funcțiile de alocare a memoriei (\fBmalloc\fP(3), \fBrealloc\fP(3) \fBmemalign\fP(3), \fBfree\fP(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. .PP Funcția \fBmuntrace\fP() dezactivează funcțiile cârlig instalate de \fBmtrace\fP(), 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 \fBmtrace\fP(), \fBmuntrace\fP() nu face nimic. .PP Atunci când este apelată \fBmtrace\fP(), aceasta verifică valoarea variabilei de mediu \fBMALLOC_TRACE\fP, 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. .PP Dacă \fBMALLOC_TRACE\fP 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 \fBmtrace\fP() nu are niciun efect. În programele set\-user\-ID și set\-group\-ID, \fBMALLOC_TRACE\fP este ignorat, iar \fBmtrace\fP() nu are niciun efect. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBmtrace\fP(), \fBmuntrace\fP() T} Siguranța firelor 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 STANDARDE GNU. .SH NOTE În mod normal, \fBmtrace\fP() este apelată o dată la începutul execuției unui program, iar \fBmuntrace\fP() nu este apelată niciodată. .PP Rezultatul de urmărire produs în urma unui apel la \fBmtrace\fP() este textual, dar nu este conceput pentru a fi citit de oameni. Biblioteca GNU C oferă un script Perl, \fBmtrace\fP(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. .PP Urmărirea efectuată de \fBmtrace\fP() implică o penalizare de performanță (dacă \fBMALLOC_TRACE\fP indică un nume de rută valid și inscriptibil). .SH ERORI Informația privind numărul de linie produsă de \fBmtrace\fP(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ă. .SH EXEMPLE Sesiunea shell de mai jos demonstrează utilizarea funcției \fBmtrace\fP() și a comenzii \fBmtrace\fP(1) într\-un program care are pierderi de memorie în două locații diferite. Demonstrația utilizează următorul program: .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); /* Nu a fost eliberată niciodată \- o scurgere de memorie */ \& calloc(16, 16); /* Nu a fost eliberată niciodată \- o scurgere de memorie */ exit(EXIT_SUCCESS); } .EE .\" SRC END .in .PP Când rulăm programul după cum urmează, observăm că \fBmtrace\fP() a diagnosticat pierderi de memorie în două locații diferite din program: .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 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 .EE .in .PP Primele două mesaje despre memoria neliberată corespund celor două apeluri \fBmalloc\fP(3) din interiorul buclei \fIfor\fP. Ultimul mesaj corespunde apelului la \fBcalloc\fP(3) (care, la rândul său, apelează \fBmalloc\fP(3)). .SH "CONSULTAȚI ȘI" \fBmtrace\fP(1), \fBmalloc\fP(3), \fBmalloc_hook\fP(3), \fBmcheck\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .