.\" -*- coding: UTF-8 -*- .\" Copyright 2014, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sprof 1 "8 februarie 2026" "Pagini de manual de Linux 6.18" .SH NUME sprof \- citește și afișează datele de profilare a obiectelor partajate .SH SINOPSIS .SY sprof [\fIopțiune\fP\ .\|.\|.\&] \fIrută\-obiect\-partajat\fP [\fIrută\-date\-profilare\fP] .YS .SH DESCRIERE Comanda \fBsprof\fP afișează un rezumat al profilării pentru obiectul partajat (biblioteca partajată) specificat ca prim argument al liniei de comandă. Rezumatul de profilare este creat folosind datele de profilare generate anterior în cel de\-al doilea argument (opțional) din linia de comandă. În cazul în care se omite ruta datelor de profilare, atunci \fBsprof\fP va încerca să le deducă folosind numele de fiu al obiectului partajat, căutând un fișier cu numele \fI.profile\fP în directorul curent. .SH OPȚIUNI Următoarele opțiuni ale liniei de comandă specifică rezultatul profilului care urmează să fie produs: .TP \fB\-\-call\-pairs\fP .TQ \fB\-c\fP Afișează o listă de perechi de rute de apelare pentru interfețele exportate de obiectul partajat, împreună cu numărul de ori de câte ori este utilizată fiecare rută. .TP \fB\-\-flat\-profile\fP .TQ \fB\-p\fP Generează un profil plat al tuturor funcțiilor din obiectul monitorizat, cu numărători și ticuri. .TP \fB\-\-graph\fP .TQ \fB\-q\fP Generează graficul de apeluri. .P Dacă nu se specifică niciuna dintre opțiunile de mai sus, atunci comportamentul implicit este de a afișa un profil plat și un grafic al apelurilor. .P Sunt disponibile următoarele opțiuni suplimentare pentru linia de comandă: .TP \fB\-\-help\fP .TQ \fB\-?\fP Afișează un rezumat al opțiunilor disponibile în linia de comandă și iese. .TP \fB\-\-usage\fP Afișează un scurt mesaj de utilizare și iese. .TP \fB\-\-version\fP .TQ \fB\-V\fP Afișează versiunea programului și iese. .SH STANDARDE GNU. .SH EXEMPLE Următorul exemplu demonstrează utilizarea \fBsprof\fP. Exemplul constă într\-un program principal care apelează două funcții dintr\-un obiect partajat. Mai întâi, codul programului principal: .P .in +4n .EX $\fB cat prog.c\fP; #include \& void x1(void); void x2(void); \& int main(int argc, char *argv[]) { x1(); x2(); exit(EXIT_SUCCESS); } .EE .in .P Funcțiile \fIx1\fP() și \fIx2\fP() sunt definite în următorul fișier sursă care este utilizat pentru a construi obiectul partajat: .P .in +4n .EX $\fB cat libdemo.c\fP; #include \& void consumeCpu1(int lim) { for (unsigned int j = 0; j < lim; j++) getppid(); } \& void x1(void) { for (unsigned int j = 0; j < 100; j++) consumeCpu1(200000); } \& void consumeCpu2(int lim) { for (unsigned int j = 0; j < lim; j++) getppid(); } \& void x2(void) { for (unsigned int j = 0; j < 1000; j++) consumeCpu2(10000); } .EE .in .P Acum construim obiectul partajat cu numele real \fIlibdemo.so.1.1.0.1\fP și cu numele de fiu \fIlibdemo.so.1\fP: .P .in +4n .EX $\fB cc \-g \-fPIC \-shared \-Wl,\-soname,libdemo.so.1 \[rs]\fP \fB \-o libdemo.so.1.0.1 libdemo.c\fP; .EE .in .P Apoi, construim legături simbolice pentru numele fiului bibliotecii și pentru numele editorului de legături al bibliotecii: .P .in +4n .EX $\fB ln \-sf libdemo.so.1.0.1 libdemo.so.1\fP; $\fB ln \-sf libdemo.so.1 libdemo.so\fP; .EE .in .P În continuare, compilăm programul principal, legându\-l de obiectul partajat și apoi enumerăm dependențele dinamice ale programului: .P .in +4n .EX $\fB cc \-g \-o prog prog.c \-L.\& \-ldemo\fP; $\fB ldd prog\fP; linux\-vdso.so.1 => (0x00007fff86d66000) libdemo.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000) /lib64/ld\-linux\-x86\-64.so.2 (0x00007fd4dc51f000) .EE .in .P Pentru a obține informații de profilare pentru obiectul partajat, definim variabila de mediu \fBLD_PROFILE\fP cu numele de fiu al bibliotecii: .P .in +4n .EX $\fB export LD_PROFILE=libdemo.so.1\fP; .EE .in .P Apoi definim variabila de mediu \fBLD_PROFILE_OUTPUT\fP cu numele de rută al directorului în care ar trebui să fie scrisă ieșirea profilului și creăm acel director dacă nu există deja: .P .in +4n .EX $\fB export LD_PROFILE_OUTPUT=$(pwd)/prof_data\fP; $\fB mkdir \-p $LD_PROFILE_OUTPUT\fP; .EE .in .P \fBLD_PROFILE\fP determină ca ieșirea de profilare să fie \fIadăugată\fP la fișierul de ieșire dacă acesta există deja, astfel încât să ne asigurăm că nu există date de profilare preexistente: .P .in +4n .EX $\fB rm \-f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile\fP; .EE .in .P Apoi executăm programul pentru a produce rezultatul profilării, care este scris într\-un fișier din directorul specificat în \fBLD_PROFILE_OUTPUT\fP: .P .in +4n .EX $\fB LD_LIBRARY_PATH=.\& ./prog\fP; $\fB ls prof_data\fP; libdemo.so.1.profile .EE .in .P Apoi folosim opțiunea \fBsprof \-p\fP pentru a genera un profil plat cu numărători și ticuri: .P .in +4n .EX $\fB sprof \-p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP; Flat profile: \& Fiecare eșantion contează ca 0,01 secunde. % cumulative self self total time seconds seconds calls us/call us/call name 60.00 0.06 0.06 100 600.00 consumeCpu1 40.00 0.10 0.04 1000 40.00 consumeCpu2 0.00 0.10 0.00 1 0.00 x1 0.00 0.10 0.00 1 0.00 x2 .EE .in .P Opțiunea \fBsprof \-q\fP generează un grafic de apeluri: .P .in +4n .EX $\fB sprof \-q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP; \& index % time self children called name \& 0.00 0.00 100/100 x1 [1] [0] 100.0 0.00 0.00 100 consumeCpu1 [0] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 0.00 0.00 1/1 [1] 0.0 0.00 0.00 1 x1 [1] 0.00 0.00 100/100 consumeCpu1 [0] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 0.00 0.00 1000/1000 x2 [3] [2] 0.0 0.00 0.00 1000 consumeCpu2 [2] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 0.00 0.00 1/1 [3] 0.0 0.00 0.00 1 x2 [3] 0.00 0.00 1000/1000 consumeCpu2 [2] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- .EE .in .P Deasupra și dedesubt, șirurile „” reprezintă identificatori care se află în afara obiectului profilat (în acest exemplu, acestea sunt instanțe ale \fImain()\fP). .P Opțiunea \fBsprof \-c\fP generează o listă de perechi de apeluri și numărul de apariții ale acestora: .P .in +4n .EX $\fB sprof \-c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP; x1 1 x1 consumeCpu1 100 x2 1 x2 consumeCpu2 1000 .EE .in .SH "CONSULTAȚI ȘI" \fBgprof\fP(1), \fBldd\fP(1), \fBld.so\fP(8) .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 .