gprof - afișează datele de profil ale graficului de
apeluri
gprof [ -[abcDhilLrsTvwxyz] ] [
-[ABCeEfFJnNOpPqQRStZ][nume] ]
[ -I directoare ] [ -d[număr] ] [ -k
de_la/până_la ]
[ -m nr-min-cicluri ] [ -R fișier-corespondențe ]
[ -t lungime-tabel ]
[ --[no-]annotated-source[=nume] ]
[ --[no-]exec-counts[=nume] ]
[ --[no-]flat-profile[=nume] ] [ --[no-]graph[=nume] ]
[ --[no-]time=nume] [ --all-lines ] [ --brief ]
[ --debug[=nivel] ] [ --function-ordering ]
[ --file-ordering fișier-corespondențe ] [
--directory-path=directoare ]
[ --display-unused-functions ] [ --file-format=nume ]
[ --file-info ] [ --help ] [ --line ] [ --inline-file-names ]
[ --min-count=n ] [ --no-static ] [ --print-path ]
[ --separate-files ] [ --static-call-graph ] [ --sum ]
[ --table-length=lungime ] [ --traditional ] [ --version ]
[ --width=n ] [ --ignore-non-functions ]
[ --demangle[=STIL] ] [ --no-demangle ]
[--external-symbol-table=nume]
[ fișier-imagine ] [ fișier-profil ... ]
«gprof» produce un profil de
execuție a programelor C, Pascal sau Fortran77. Efectul rutinelor
apelate este încorporat în profilul fiecărui apelant.
Datele profilului sunt preluate din fișierul de profil al graficului
de apeluri (gmon.out implicit) care este creat de programele
compilate cu opțiunea -pg a
„cc”,
„pc” și
„f77”. Opțiunea -pg face
legătura și cu versiunile rutinelor de bibliotecă care
sunt compilate pentru profilare.
«gprof» citește fișierul
obiect dat (valoarea implicită este
„a.out”) și stabilește
relația dintre tabelul său de simboluri și profilul
graficului de apeluri din gmon.out. În cazul în care
sunt specificate mai multe fișiere de profil, rezultatul
«gprof» arată suma
informațiilor de profil din fișierele de profil date.
Dacă utilizați gcc 2.95.x sau 3.0 pentru a vă
compila binarele, este posibil să fie necesar să
adăugați -fprofile-arcs la linia de comandă de
compilare pentru ca graficele de apeluri să fie stocate corect
în gmon.out.
«gprof» calculează
cantitatea de timp petrecută în fiecare rutină. Apoi,
aceste durate sunt propagate de-a lungul marginilor graficului de apeluri.
Se descoperă cicluri, iar apelurile în cadrul unui ciclu sunt
efectuate pentru a împărți timpul ciclului.
În urma analizei sunt disponibile mai multe formate de
rezultate.
Profilul plan arată cât timp a petrecut
programul dvs. în fiecare funcție și de câte ori
a fost apelată funcția respectivă. Dacă
doriți pur și simplu să știți ce
funcții consumă cele mai multe cicluri, acest lucru este
precizat concis aici.
Graficul de apelare arată, pentru fiecare
funcție, ce funcții au apelat-o, ce alte funcții au
fost apelate și de câte ori. Există, de asemenea, o
estimare a timpului petrecut în subrutinele fiecărei
funcții. Acest lucru poate sugera locuri în care ați
putea încerca să eliminați apelurile de funcții
care consumă mult timp.
Lista sursă adnotată este o copie a codului
sursă al programului, etichetată cu numărul de ori de
câte ori a fost executată fiecare linie a programului.
Aceste opțiuni specifică pe care dintre diferitele
formate de ieșire trebuie să-l producă
«gprof».
Multe dintre aceste opțiuni acceptă un argument
specificare-simbol opțional pentru a specifica
funcțiile care trebuie incluse sau excluse. Aceste opțiuni pot
fi specificate de mai multe ori, cu diferite argumente
„specificare-simbol”, pentru a include sau exclude seturi de
simboluri.
Specificarea oricăreia dintre aceste opțiuni
înlocuiește opțiunea implicită (-p -q),
care afișează un profil plan și o analiză
grafică a apelurilor pentru toate funcțiile.
- "-A[symspec]"
- "--annotated-source[=symspec]"
- Opțiunea -A face ca
«gprof» să afișeze
codul sursă adnotat. Dacă este specificat argumentul
specificare-simbol, imprimă numai ieșirea pentru
simbolurile corespunzătoare.
- "-b"
- "--brief"
- Specificarea oricăreia dintre aceste opțiuni
înlocuiește opțiunea implicită (-p -q),
care afișează un profil plan și o analiză
grafică a apelurilor pentru toate funcțiile.
- "-B"
- Opțiunea -B face ca
«gprof» să afișeze
analiza grafică a apelurilor.
- "-C[symspec]"
- "--exec-counts[=symspec]"
- Opțiunea -C face ca
«gprof» să afișeze o
listă a funcțiilor și numărul de apeluri
pentru fiecare dintre ele. Dacă este specificat argumentul
specificare-simbol, imprimă contorizarea numai pentru
simbolurile care corespund.
În cazul în care fișierul de date de
profil conține înregistrări de numărare a
blocurilor de bază, specificarea opțiunii -l,
împreună cu -C, va determina numărarea
și afișarea numărului de execuții ale
blocurilor de bază.
- "-i"
- "--file-info"
- Opțiunea -i face ca
«gprof» să afișeze
informații sumare despre fișierul (fișierele) de date
de profil și apoi să iasă. Se afișează
numărul de înregistrări ale histogramei, ale
graficului de apeluri și ale numărului de blocuri de
bază.
- "-I dirs"
- "--directory-path=dirs"
- Opțiunea -I specifică o listă de directoare de
căutare în care se caută fișierele
sursă. Variabila de mediu GPROF_PATH poate fi, de asemenea,
utilizată pentru a transmite aceste informații. Se
utilizează mai ales pentru ieșirea de surse adnotate.
- "-J[symspec]"
- "--no-annotated-source[=symspec]"
- Opțiunea -J face ca
«gprof» să nu afișeze
codul sursă adnotat. Dacă se specifică argumentul
specificare-simbol, «gprof»
afișează codul sursă adnotat, dar exclude simbolurile
corespunzătoare.
- "-L"
- "--print-path"
- În mod normal, numele fișierelor sursă sunt
afișate cu componenta de rută suprimată.
Opțiunea -L face ca
«gprof» să afișeze
numele de rută complet al numelor de fișiere sursă,
care este determinat din informațiile simbolice de depanare din
fișierul imagine și este relativ la directorul în
care a fost invocat compilatorul.
- "-p[symspec]"
- "--flat-profile[=symspec]"
- Opțiunea -p face ca
«gprof» să afișeze un
profil plan. Dacă este specificatargumentul
specificare-simbol, imprimă profilul plan numai pentru
simbolurile corespunzătoare.
- "-P[symspec]"
- "--no-flat-profile[=symspec]"
- Opțiunea -P face ca
«gprof» să suprime imprimarea
unui profil plan. Dacă se specifică argumentul
specificare-simbol, «gprof»
afișează un profil plan, dar exclude simbolurile
corespunzătoare.
- "-q[symspec]"
- "--graph[=symspec]"
- Opțiunea -q face ca
«gprof» să afișeze
analiza grafică a apelurilor. Dacă se specifică
argumentul specificare-simbol, imprimă graficul de apeluri
numai pentru simbolurile corespunzătoare și pentru copiii
acestora.
- "-Q[symspec]"
- "--no-graph[=symspec]"
- Opțiunea -Q face ca
«gprof» să suprime
afișarea graficului de apeluri. Dacă se specifică
argumentul specificare-simbol,
«gprof» afișează un
grafic de apeluri, dar exclude simbolurile corespunzătoare.
- "-t"
- "--table-length=num"
- Opțiunea -t face ca, atunci când este activată
adnotarea sursei, să fie listate cele mai active linii de
sursă număr din fiecare fișier sursă.
Opțiunea implicită este 10.
- "-y"
- "--separate-files"
- Această opțiune afectează doar ieșirea sursei
adnotate. În mod normal,
«gprof» imprimă
fișierele sursă adnotate la ieșirea standard.
Dacă se specifică această opțiune, sursa
adnotată pentru un fișier numit
rută/către/nume_fișier este generată
în fișierul nume_fișier-ann. În cazul
în care sistemul de fișiere subiacent ar trunchia
nume_fișier-ann astfel încât să
suprascrie originalul nume_fișier,
«gprof» generează sursa
adnotată în fișierul nume_fișier.ann
în locul acestuia (dacă numele original al fișierului
are o extensie, această extensie este
înlocuită cu .ann).
- "-Z[symspec]"
- "--no-exec-counts[=symspec]"
- Opțiunea -Z face ca
«gprof» să nu afișeze
o listă a funcțiilor și numărul de apeluri
pentru fiecare dintre ele. Dacă este specificat argumentul
specificare-simbol, imprimă numărătoarea, dar
exclude simbolurile corespunzătoare.
- "-r"
- "--function-ordering"
- Opțiunea --function-ordering face ca
«gprof» să afișeze o
sugestie de ordonare a funcțiilor pentru program pe baza datelor de
profilare. Această opțiune sugerează o ordonare care
poate îmbunătăți comportamentul de paginare,
tlb și cache pentru program pe sistemele care acceptă
ordonarea arbitrară a funcțiilor într-un executabil.
Detaliile exacte ale modului în care se
forțează editorul de legături să plaseze
funcțiile într-o anumită ordine depind de sistem
și nu fac obiectul acestui manual.
- "-R map_file"
- "--file-ordering map_file"
- Opțiunea --file-ordering face ca
«gprof» să afișeze o
sugestie de ordonare a liniilor de legătură .o pentru
program pe baza datelor de profilare. Această opțiune
sugerează o ordonare care poate
îmbunătăți comportamentul de paginare, tlb
și cache pentru program pe sistemele care nu acceptă
ordonarea arbitrară a funcțiilor într-un executabil.
Utilizarea argumentului -a este foarte
recomandată cu această opțiune.
Argumentul fișier-corespondențe este un
nume de rută către un fișier care furnizează
corespondențe între numele funcției și
fișierul obiect. Formatul fișierului este similar cu cel
al ieșirii programului
«nm».
c-parse.o:00000000 T yyparse
c-parse.o:00000004 C yyerrflag
c-lang.o:00000000 T maybe_objc_method_name
c-lang.o:00000000 T print_lang_statistics
c-lang.o:00000000 T recognize_objc_keyword
c-decl.o:00000000 T print_lang_identifier
c-decl.o:00000000 T print_lang_type
...
Pentru a crea un fișier-corespondențe cu
GNU «nm», tastați o
comandă precum «nm --extern-only
--defined-only -v --print-file-name program-name».
- "-T"
- "--traditional"
- Opțiunea -T face ca
«gprof« să afișeze
ieșirea în stilul BSD
„tradițional”.
- "-w width"
- "--width=width"
- Stabilește lățimea liniilor de ieșire la
lățime. În prezent, se utilizează numai
la imprimarea indexului funcției în partea de jos a
graficului de apeluri.
- "-x"
- "--all-lines"
- Această opțiune afectează doar ieșirea sursei
adnotate. În mod implicit, sunt adnotate numai liniile de la
începutul unui bloc de bază. Dacă se specifică
această opțiune, fiecare linie dintr-un bloc de bază
este adnotată prin repetarea adnotării pentru prima linie.
Acest comportament este similar cu «tcov
-a».
- "--demangle[=style]"
- "--no-demangle"
- Aceste opțiuni controlează dacă numele simbolurilor
C++ trebuie să fie separate la imprimarea rezultatelor.
Opțiunea implicită este să se decodifice simbolurile.
Opțiunea „--no-demangle”
poate fi utilizată pentru a dezactiva decodificarea. Compilatoare
diferite au stiluri diferite de codificare. Argumentul opțional
„stil decodificare” poate fi utilizat pentru a alege un stil
de decodificare adecvat pentru compilatorul dumneavoastră.
Opțiuni de analiză
- "-a"
- "--no-static"
- Opțiunea -a face ca
«gprof» să suprime
afișarea funcțiilor declarate static (private); (acestea
sunt funcții ale căror nume nu sunt listate ca fiind globale
și care nu sunt vizibile în afara
fișierului/funcției/blocului în care au fost
definite). Timpul petrecut în aceste funcții, apelurile
către/de la acestea etc., vor fi toate atribuite funcției
care a fost încărcată direct înaintea ei
în fișierul executabil. Această opțiune
afectează atât profilul plan, cât și graficul
de apeluri.
- "-c"
- "--static-call-graph"
- Opțiunea -c face ca graficul de apeluri al programului
să fie mărit cu o euristică care examinează
spațiul de text al fișierului obiect și
identifică apelurile de funcții în codul binar al
mașinii. Deoarece înregistrările normale ale
graficului de apeluri sunt generate numai atunci când sunt
introduse funcții, această opțiune identifică
copii care ar fi putut fi apelați, dar nu au fost niciodată.
Apelurile către funcții care nu au fost compilate cu
profilarea activată sunt, de asemenea, identificate, dar numai
dacă sunt prezente intrări în tabela de simboluri
pentru acestea. Apelurile către rutinele bibliotecii dinamice
nu sunt de obicei găsite de această opțiune.
Părinții sau copiii identificați prin intermediul
acestei euristici sunt indicați în graficul de apeluri cu un
număr de apeluri de 0.
- "-D"
- "--ignore-non-functions"
- Opțiunea -D face ca
«gprof» să ignore simbolurile
despre care nu se știe că sunt funcții.
Această opțiune va oferi date de profil mai precise pe
sistemele în care este suportată (Solaris și HPUX, de
exemplu).
- "-k from/to"
- Opțiunea -k vă permite să
ștergeți din graficul de apelare toate arcurile de la
simbolurile care corespund de_la specificare-simbol la cele care
corespund până_la specificare-simbol.
- "-l"
- "--line"
- Opțiunea -l activează profilarea linie cu linie, ceea
ce face ca rezultatele histogramei să fie încărcate
pe linii individuale de cod sursă, în loc de funcții.
Această caracteristică funcționează numai cu
programe compilate de versiuni mai vechi ale compilatorului
«gcc». Versiunile mai noi de
«gcc» sunt concepute pentru a
funcționa în schimb cu instrumentul
«gcov».
Dacă programul a fost compilat cu contorizarea
blocurilor de bază activată, această opțiune
va identifica, de asemenea, de câte ori a fost executată
fiecare linie de cod. În timp ce profilarea linie cu linie poate
ajuta la izolarea locului într-o funcție mare în
care un program își petrece timpul, aceasta crește
semnificativ timpul de execuție al
«gprof» și amplifică
inexactitățile statistice.
- "--inline-file-names"
- Această opțiune face ca
«gprof» să afișeze
fișierul sursă după fiecare simbol, atât
în profilul plan, cât și în graficul de
apeluri. Ruta completă a fișierului este imprimată
dacă este utilizată împreună cu
opțiunea -L.
- "-m num"
- "--min-count=num"
- Această opțiune afectează doar numărul de
execuții. Simbolurile care sunt executate de mai puțin de
număr ori sunt suprimate.
- "-nsymspec"
- "--time=symspec"
- Opțiunea -n face ca
«gprof», în analiza
grafică a apelurilor, să propage timpii numai pentru
simbolurile care corespund cu specificare-simbol.
- "-Nsymspec"
- "--no-time=symspec"
- Opțiunea -n face ca
«gprof», în analiza
grafică a apelurilor, să nu propage timpii pentru
simbolurile care corespund cu specificare-simbol.
- "-Sfilename"
- "--external-symbol-table=filename"
- Opțiunea -S face ca
«gprof» să citească un
fișier extern de tabele de simboluri, cum ar fi
/proc/kallsyms, în loc să citească tabelul de
simboluri din fișierul obiect dat (opțiunea implicită
este „a.out”). Acest lucru este util
pentru profilarea modulelor de nucleu.
- "-z"
- "--display-unused-functions"
- Dacă dați opțiunea -z,
«gprof» va menționa toate
funcțiile din profilul plan, chiar și pe cele care nu au
fost apelate niciodată și care nu au avut timp petrecut
în ele. Acest lucru este util împreună cu
opțiunea -c pentru a descoperi ce rutine nu au fost
niciodată apelate.
Opțiuni diverse
- "-d[num]"
- "--debug[=num]"
- Opțiunea -d număr specifică
opțiunile de depanare. Dacă argumentul număr
nu este specificat, activează toate depanările.
- "-h"
- "--help"
- Opțiunea -h afișează utilizarea liniei de
comandă.
- "-Oname"
- "--file-format=name"
- Selectează formatul fișierelor de date de profil. Formatele
recunoscute sunt auto (implicit), bsd, 4.4bsd,
magic și prof (încă nu este
acceptat).
- "-s"
- "--sum"
- Opțiunea -s determină
«gprof» să rezume
informațiile din fișierele de date de profil pe care le-a
citit și să scrie un fișier de date de profil numit
gmon.sum, care conține toate informațiile din
fișierele de date de profil pe care
«gprof» le-a citit. Fișierul
gmon.sum poate fi unul dintre fișierele de intrare
specificate; acest lucru are ca efect fuzionarea datelor din celelalte
fișiere de intrare în gmon.sum.
Eventual, puteți rula din nou
«gprof» fără
-s pentru a analiza datele cumulative din fișierul
gmon.sum.
- "-v"
- "--version"
- Opțiunea -v face ca
«gprof» să afișeze
numărul versiunii curente și apoi să
iasă.
Opțiuni învechite
Aceste opțiuni au fost înlocuite cu versiuni mai noi
care utilizează argumentele „specificare-simbol”.
- "-e function_name"
- Opțiunea -e funcție îi indică
lui «gprof» să nu
afișeze informații despre funcția
nume-funcție (și copiii săi...) în
graficul de apeluri. Funcția va fi în continuare
listată ca fiind un copil al oricărei funcții care o
apelează, dar numărul său de index va fi
afișat ca [not printed]. Se pot da mai multe opțiuni
-e; cu fiecare opțiune -e poate fi indicat doar un
singur argument nume-funcție.
- "-E function_name"
- Opțiunea „-E funcție”
funcționează la fel ca opțiunea
„-e”, dar timpul petrecut în
funcție (și copiii care nu au fost apelați din
altă parte) nu va fi utilizat pentru a calcula procentele de timp
pentru graficul de apeluri. Se pot da mai multe opțiuni -E;
cu fiecare opțiune -E poate fi indicat doar un singur
argument nume-funcției.
- "-f function_name"
- Opțiunea -f funcție face ca
«gprof» să limiteze graficul
de apeluri la funcția numele_funcției și la
copiii acesteia (și la copiii acestora...). Se pot da mai multe
opțiuni -f; cu fiecare opțiune -f poate fi
indicat doar un singur argument nume-funcție.
- "-F function_name"
- Opțiunea -F funcție funcționează
la fel ca opțiunea „-f”, dar
numai timpul petrecut în funcție și în copiii
acesteia (și copiii acestora...) va fi utilizat pentru a determina
timpul total și procentele de timp pentru graficul de apeluri. Se
pot da mai multe opțiuni -F; cu fiecare opțiune
-F se poate indica doar un singur argument
nume-funcție. Opțiunea -F prevalează
asupra opțiunii -E.
- "a.out"
- lista de nume și spațiul pentru text.
- "gmon.out"
- graficul și profilul dinamic al apelurilor.
- "gmon.sum"
- rezumatul graficului dinamic al apelurilor și al profilului.
Finețea eșantionării este prezentată,
dar rămâne în cel mai bun caz statistică.
Presupunem că timpul pentru fiecare execuție a unei
funcții poate fi exprimat prin timpul total al funcției
împărțit la numărul de apeluri ale
funcției. Astfel, timpul propagat de-a lungul arcurilor graficului de
apelare către părinții funcției este direct
proporțional cu numărul de ori de când este parcurs
acel arc.
Părinții care nu sunt ei înșiși
profilați vor avea timpul copiilor lor profilați propagat
către ei, dar vor apărea ca fiind invocați spontan
în listarea graficului de apeluri și nu vor avea timpul lor
propagat mai departe. În mod similar, cei care captează
semnale, chiar dacă sunt profilați, vor părea a fi
spontani (deși din motive mai obscure). Orice copil profilat al
captatorilor de semnal ar trebui să aibă timpii lor
propagați în mod corespunzător, cu excepția
cazului în care captatorul de semnal a fost invocat în timpul
execuției rutinei de profilare, caz în care totul este
pierdut.
Programul profilat trebuie să apeleze
„exit”(2) sau să se
întoarcă normal pentru ca informațiile de profilare
să fie salvate în fișierul gmon.out.
cc(1), prof(1) și intrarea Info pentru
gprof.
„An Execution Profiler for Modular Programs”, de S.
Graham, P. Kessler, M. McKusick; Software - Practice and Experience, Vol.
13, paginile 671-685, 1983.
„gprof: A Call Graph Execution Profiler”, de S.
Graham, P. Kessler, M. McKusick; Proceedings of the SIGPLAN '82 Symposium on
Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, paginile 120-126,
iunie 1982.
Drepturi de autor © 1988-2025 Free Software Foundation,
Inc.
Se acordă permisiunea de a copia, distribui și/sau
modifica acest document în conformitate cu termenii Licenței
GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioară
publicată de Free Software Foundation; fără
secțiuni invariante, fără texte de copertă
și fără texte de contra copertă. O copie a
licenței este inclusă în secțiunea
intitulată „GNU Free Documentation License”.
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.