gprof(1): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
 
(En mellanliggande sidversion av samma användare visas inte)
Rad 469: Rad 469:
== SE ÄVEN ==
== SE ÄVEN ==


'''monitor'''(3), '''profil'''(2), '''cc'''(1), '''prof'''(1), och Info-posten för ''gprof''.
'''monitor'''(3), [[profil(2)|'''profil'''(2)]], [[cc(1)|'''cc'''(1)]], [[prof(1)|'''prof'''(1)]], och Info-posten för ''gprof''.


"An Execution Profiler for Modular Programs", av S. Graham, P. Kessler, M. McKusick; ''Software - Practice and Experience'', Vol. 13, s. 671-685, 1983.
"An Execution Profiler for Modular Programs", av S. Graham, P. Kessler, M. McKusick; ''Software - Practice and Experience'', Vol. 13, s. 671-685, 1983.
Rad 488: Rad 488:


Information om projektet finns på:
Information om projektet finns på:
<pre>
http://www.gnu.org/software/binutils/
http://www.gnu.org/software/binutils/
</pre>


Om du har en felrapport för denna manualsida, se:
Om du har en felrapport för denna manualsida, se:
<pre>
http://sourceware.org/bugzilla/enter_bug.cgi?product=binutils
http://sourceware.org/bugzilla/enter_bug.cgi?product=binutils
</pre>
Denna sida hämtades från arkivet:
Denna sida hämtades från arkivet:


Rad 505: Rad 498:
</pre>
</pre>


hämtat från:
hämtat från: https://ftp.gnu.org/gnu/binutils/


<pre>
https://ftp.gnu.org/gnu/binutils/
</pre>


den 24 maj 2026.
den 24 maj 2026.

Nuvarande version från 14 augusti 2026 kl. 06.46


NAMN

gprof – visa profileringsdata för anropsgraf

SYNOPSIS

gprof [ -[abcDhilLrsTvwxyz] ] [ -[ABCeEfFJnNOpPqQRStZ][name] ]
      [ -I dirs ] [ -d[num] ] [ -k from/to ]
      [ -m min-count ] [ -R map_file ] [ -t table-length ]
      [ --[no-]annotated-source[=name] ]
      [ --[no-]exec-counts[=name] ]
      [ --[no-]flat-profile[=name] ] [ --[no-]graph[=name] ]
      [ --[no-]time=name] [ --all-lines ] [ --brief ]
      [ --debug[=level] ] [ --function-ordering ]
      [ --file-ordering map_file ] [ --directory-path=dirs ]
      [ --display-unused-functions ] [ --file-format=name ]
      [ --file-info ] [ --help ] [ --line ] [ --inline-file-names ]
      [ --min-count=n ] [ --no-static ] [ --print-path ]
      [ --separate-files ] [ --static-call-graph ] [ --sum ]
      [ --table-length=len ] [ --traditional ] [ --version ]
      [ --width=n ] [ --ignore-non-functions ]
      [ --demangle[=STYLE] ] [ --no-demangle ]
      [--external-symbol-table=name]
      [ image-file ] [ profile-file ... ]

BESKRIVNING

"gprof" producerar en körningsprofil för C-, Pascal- eller Fortran77-program. Effekten av anropade rutiner införlivas i profilen för varje anropare. Profileringsdata tas från anropsgrafens profileringsfil, gmon.out som standard, vilken skapas av program som kompilerats med optionen -pg för "cc", "pc" och "f77". Optionen -pg länkar också in versioner av biblioteksrutinerna som är kompilerade för profilering. "Gprof" läser den givna objektfilen, standard är "a.out", och fastställer relationen mellan dess symboltabell och anropsgrafprofilen från gmon.out.

om mer än en profileringsfil anges visar "gprof"-utdata summan av profileringsinformationen i de givna profileringsfilerna.

"Gprof" beräknar mängden tid som spenderats i varje rutin.

Därefter propageras dessa tider längs kanterna i anropsgrafen.

Cykler upptäcks, och anrop in i en cykel får dela cykelns tid.

Flera former av utdata finns tillgängliga från analysen.

Den platta profilen visar hur mycket tid ditt program spenderade i varje funktion och hur många gånger den funktionen anropades.

Om du helt enkelt vill veta vilka funktioner som förbrukar flest cykler anges det kortfattat här.

Anropsgrafen visar, för varje funktion, vilka funktioner som anropade den, vilka andra funktioner den anropade och hur många gånger.

Det finns också en uppskattning av hur mycket tid som spenderades i underrutinerna för varje funktion.

Detta kan föreslå platser där du kan försöka eliminera funktionsanrop som använder mycket tid.

Den annoterade källkodslistningen är en kopia av programmets källkod, märkt med antalet gånger varje rad i programmet kördes.

OPTIONER

Dessa optioner anger vilket av flera utdataformat "gprof" ska producera.

Många av dessa optioner tar en valfri symspec för att ange funktioner som ska inkluderas eller exkluderas.

Dessa optioner kan anges flera gånger, med olika symspecs, för att inkludera eller exkludera uppsättningar av symboler.

Att ange någon av dessa optioner åsidosätter standardvärdet, -p -q, vilket skriver ut en platt profil och anropsgrafanalys för alla funktioner.

-A[symspec]

--annotated-source[=symspec]

Option -A gör att "gprof" skriver ut annoterad källkod.
Om symspec anges skrivs utdata endast ut för matchande symboler.

-b

--brief

Om optionen -b anges skriver "gprof" inte ut de utförliga förklaringar som försöker förklara betydelsen av alla fält i tabellerna.
Detta är användbart om du avser att skriva ut utdatan, eller är trött på att se förklaringarna.

-B

Option -B gör att "gprof" skriver ut anropsgrafanalysen.

-C[symspec]

--exec-counts[=symspec]

Option -C gör att "gprof" skriver ut en summering av funktioner och antalet gånger varje sådan anropades.
Om symspec anges skrivs summering endast ut för matchande symboler.
Om profileringsdatafilen innehåller grundblocks-räkningsposter, gör angivande av optionen -l tillsammans med -C att exekveringsräkningar för grundblock summeras och visas.

-i

--file-info

Option -i gör att "gprof" visar sammanfattningsinformation om profileringsdatafilen eller profileringsdatafilerna och sedan avslutar.
Antalet histogram-, anropsgraf- och grundblocks-räkningsposter visas.

-I dirs

--directory-path= dirs

Option -I anger en lista över sökkataloger där källfiler ska hittas.
Miljövariabeln GPROF_PATH kan också användas för att förmedla denna information.
Används mest för annoterad källkodsutdata.

-J[symspec]

--no-annotated-source[=symspec]

Option -J gör att "gprof" inte skriver ut annoterad källkod.
Om symspec anges skriver "gprof" ut annoterad källkod, men exkluderar matchande symboler.

-L

--print-path

Normalt skrivs källfilnamn ut med sökvägskomponenten undertryckt.
Option -L gör att "gprof" skriver ut den fullständiga sökvägen för källfilnamn, vilken bestäms från symbolisk felsökningsinformation i image-filen och är relativ till katalogen där kompilatorn anropades.

-p[symspec]

--flat-profile[=symspec]

Option -p gör att "gprof" skriver ut en platt profil.
Om symspec anges skrivs platt profil endast ut för matchande symboler.

-P[symspec]

--no-flat-profile[=symspec]

Option -P gör att "gprof" undertrycker utskrift av en platt profil.
Om symspec anges skriver "gprof" ut en platt profil, men exkluderar matchande symboler.

-q[symspec]

--graph[=symspec]

Option -q gör att "gprof" skriver ut anropsgrafanalysen.
Om symspec anges skrivs anropsgraf endast ut för matchande symboler och deras barn.

-Q[symspec]

--no-graph[=symspec]

Option -Q gör att "gprof" undertrycker utskrift av anropsgrafen.
Om symspec anges skriver "gprof" ut en anropsgraf, men exkluderar matchande symboler.

-t

--table-length= num

Option -t gör att de num mest aktiva källraderna i varje källfil listas när källannotering är aktiverad.
Standard är 10.

-y

--separate-files

Denna option påverkar endast annoterad källkodsutdata.
Normalt skriver "gprof" ut annoterade källfiler till standardutdata.
Om denna option anges genereras annoterad källa för en fil med namnet path/filename i filen filename-ann.
Om det underliggande filsystemet skulle trunkera filename-ann så att det skriver över det ursprungliga filename, genererar "gprof" annoterad källa i filen filename.ann i stället; om det ursprungliga filnamnet har en ändelse ersätts den ändelsen med .ann.

-Z[symspec]

--no-exec-counts[=symspec]

Option -Z gör att "gprof" inte skriver ut en summering av funktioner och antalet gånger varje sådan anropades.
Om symspec anges skrivs summering ut, men matchande symboler exkluderas.

-r

--function-ordering

Option --function-ordering gör att "gprof" skriver ut en föreslagen funktionsordning för programmet baserat på profileringsdata.
Denna option föreslår en ordning som kan förbättra paging-, tlb- och cachebeteende för programmet på system som stöder godtycklig ordning av funktioner i en körbar fil.
De exakta detaljerna för hur länkaren ska tvingas placera funktioner i en viss ordning är systemberoende och ligger utanför denna manuals omfång.

-R map_file

--file-ordering map_file

Option --file-ordering gör att "gprof" skriver ut en föreslagen .o-länkordning för programmet baserat på profileringsdata.
Denna option föreslår en ordning som kan förbättra paging-, tlb- och cachebeteende för programmet på system som inte stöder godtycklig ordning av funktioner i en körbar fil.
Användning av argumentet -a rekommenderas starkt med denna option.
Argumentet map_file är en sökväg till en fil som tillhandahåller mappningar från funktionsnamn till objektfil.
Filens format liknar utdata från programmet "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
...
För att skapa en map_file med GNU "nm", skriv ett kommando som "nm --extern-only --defined-only -v --print-file-name program-name".

-T

--traditional

Option -T gör att "gprof" skriver ut sina utdata i "traditionell" BSD-stil.

-w width

--width= width

Sätter bredden på utdatarader till width.
För närvarande används detta endast vid utskrift av funktionsindexet längst ned i anropsgrafen.

-x

--all-lines

Denna option påverkar endast annoterad källkodsutdata.
Som standard annoteras endast raderna i början av ett grundblock.
Om denna option anges annoteras varje rad i ett grundblock genom att upprepa annoteringen för den första raden.
Detta beteende liknar "tcov":s -a.

--demangle[=style]

--no-demangle

Dessa optioner styr om C++-symbolnamn ska avmanglas när utdata skrivs ut.
Standard är att avmangla symboler.
Option --no-demangle kan användas för att stänga av avmangling.
Olika kompilatorer har olika manglingsstilar.
Det valfria avmanglingsstilargumentet kan användas för att välja en lämplig avmanglingsstil för din kompilator.

Analysoptioner

-a

--no-static

Option -a gör att "gprof" undertrycker utskrift av statiskt deklarerade, privata, funktioner.
Dessa är funktioner vars namn inte listas som globala och som inte är synliga utanför filen, funktionen eller blocket där de definierades.
Tid spenderad i dessa funktioner, anrop till/från dem, och så vidare, kommer alla att tillskrivas funktionen som laddades direkt före den i den körbara filen.
Denna option påverkar både den platta profilen och anropsgrafen.

-c

--static-call-graph

Option -c gör att programmets anropsgraf utökas med en heuristik som undersöker objektfilens textutrymme och identifierar funktionsanrop i den binära maskinkoden.
Eftersom normala anropsgrafposter endast genereras när funktioner anges identifierar denna option barn som kunde ha anropats, men aldrig blev det.
Anrop till funktioner som inte kompilerats med profilering aktiverad identifieras också, men endast om symboltabellposter finns för dem.
Anrop till dynamiska biblioteksrutiner hittas typiskt inte av denna option.
Föräldrar eller barn som identifieras via denna heuristik anges i anropsgrafen med anropsantalet 0.

-D

--ignore-non-functions

Option -D gör att "gprof" ignorerar symboler som inte är kända som funktioner.
Denna option ger mer exakta profileringsdata på system där den stöds, till exempel Solaris och HPUX.

-k from/to

Option -k låter dig ta bort från anropsgrafen alla bågar från symboler som matchar symspec from till de som matchar symspec to.

-l

--line

Option -l aktiverar rad-för-rad-profilering, vilket gör att histogramträffar debiteras enskilda källkodsrader i stället för funktioner.
Denna funktion fungerar endast med program kompilerade av äldre versioner av kompilatorn "gcc".
Nyare versioner av "gcc" är utformade för att fungera med verktyget "gcov" i stället.
Om programmet kompilerades med grundblocks-räkning aktiverad identifierar denna option också hur många gånger varje kodrad kördes.
Även om rad-för-rad-profilering kan hjälpa till att isolera var i en stor funktion ett program spenderar sin tid, ökar den också avsevärt körtiden för "gprof" och förstorar statistiska inexaktheter.

--inline-file-names

Denna option gör att "gprof" skriver ut källfilen efter varje symbol i både den platta profilen och anropsgrafen.
Den fullständiga sökvägen till filen skrivs ut om den används med optionen -L.

-m num

--min-count= num

Denna option påverkar endast utdata för exekveringsräkning.
Symboler som körs färre än num gånger undertrycks.

-n symspec

--time= symspec

Option -n gör att "gprof", i sin anropsgrafanalys, endast propagerar tider för symboler som matchar symspec.

-N symspec

--no-time= symspec

Option -n gör att "gprof", i sin anropsgrafanalys, inte propagerar tider för symboler som matchar symspec.

-S filename

--external-symbol-table= filename

Option -S gör att "gprof" läser en extern symboltabellfil, såsom /proc/kallsyms, i stället för att läsa symboltabellen från den givna objektfilen; standard är "a.out".
Detta är användbart för profilering av kärnmoduler.

-z

--display-unused-functions

Om du anger optionen -z nämner "gprof" alla funktioner i den platta profilen, även de som aldrig anropades och som ingen tid spenderades i.
Detta är användbart tillsammans med optionen -c för att upptäcka vilka rutiner som aldrig anropades.

Diverse optioner

-d[num]

--debug[=num]

Option -d num anger felsökningsoptioner.
Om num inte anges aktiveras all felsökning.

-h

--help

Option -h skriver ut kommandoradsanvändning.

-O name

--file-format= name

Väljer formatet för profileringsdatafilerna.
Kända format är auto, standard, bsd, 4.4bsd, magic och prof, ännu inte stött.

-s

--sum

Option -s gör att "gprof" sammanfattar informationen i profileringsdatafilerna som den läste in, och skriver ut en profileringsdatafil kallad gmon.sum, som innehåller all information från profileringsdatafilerna som "gprof" läste in.
Filen gmon.sum kan vara en av de angivna indatafilerna; effekten av detta är att slå samman data i de andra indatafilerna in i gmon.sum.
Slutligen kan du köra "gprof" igen utan -s för att analysera de kumulativa data i filen gmon.sum.

-v

--version

Flaggan -v gör att "gprof" skriver ut aktuellt versionsnummer och sedan avslutar.

Föråldrade optioner

Dessa optioner har ersatts med nyare versioner som använder symspecs.

-e function_name

Option -e function säger åt "gprof" att inte skriva ut information om funktionen function_name, och dess barn, i anropsgrafen.
Funktionen listas fortfarande som ett barn till alla funktioner som anropar den, men dess indexnummer visas som [not printed].
Mer än en option -e kan anges; endast ett function_name kan anges med varje option -e.

-E function_name

Option "-E function" fungerar som option "-e", men tid som spenderas i funktionen, och barn som inte anropades från någon annanstans, används inte för att beräkna tidsprocenter för anropsgrafen.
Mer än en option -E kan anges; endast ett function_name kan anges med varje option -E.

-f function_name

Option -f function gör att "gprof" begränsar anropsgrafen till funktionen function_name och dess barn, och deras barn.
Mer än en option -f kan anges; endast ett function_name kan anges med varje option -f.

-F function_name

Option -F function fungerar som option "-f", men endast tid som spenderas i funktionen och dess barn, och deras barn, används för att bestämma total tid och tidsprocenter för anropsgrafen.
Mer än en option -F kan anges; endast ett function_name kan anges med varje option -F.
Option -F åsidosätter option -E.

FILER

a.out

namelisten och textutrymmet.

gmon.out

dynamisk anropsgraf och profil.

gmon.sum

sammanfattad dynamisk anropsgraf och profil.

FEL

Samplingens granularitet visas, men förblir i bästa fall statistisk.

Vi antar att tiden för varje exekvering av en funktion kan uttryckas som den totala tiden för funktionen delad med antalet gånger funktionen anropas.

Därmed är tiden som propageras längs anropsgrafens bågar till funktionens föräldrar direkt proportionell mot antalet gånger den bågen traverseras.

Föräldrar som inte själva profileras får tiden för sina profilerade barn propagerad till sig, men de kommer att framstå som spontant anropade i anropsgraflistningen, och deras tid kommer inte att propageras vidare.

På liknande sätt kommer signalhanterare, även om de profileras, att framstå som spontana, även om det är av mer obskyra skäl.

Eventuella profilerade barn till signalhanterare bör få sina tider propagerade korrekt, om inte signalhanteraren anropades under exekveringen av profileringsrutinen, i vilket fall allt är förlorat.

Det profilerade programmet måste anropa "exit"(2) eller returnera normalt för att profileringsinformationen ska sparas i filen gmon.out.

SE ÄVEN

monitor(3), profil(2), cc(1), prof(1), och Info-posten för gprof.

"An Execution Profiler for Modular Programs", av S. Graham, P. Kessler, M. McKusick; Software - Practice and Experience, Vol. 13, s. 671-685, 1983.

"gprof: A Call Graph Execution Profiler", av S. Graham, P. Kessler, M. McKusick; Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, nr 6, s. 120-126, juni 1982.

UPPHOVSRÄTT

Copyright (c) 1988-2026 Free Software Foundation, Inc.

Tillstånd ges att kopiera, distribuera och/eller modifiera detta dokument enligt villkoren i GNU Free Documentation License, version 1.3 eller någon senare version publicerad av Free Software Foundation; utan oföränderliga avsnitt, utan framsidestexter och utan baksidestexter.

En kopia av licensen ingår i avsnittet med titeln "GNU Free Documentation License".

KOLOFON

Denna sida är en del av projektet binutils, en samling verktyg för arbete med körbara binärer.

Information om projektet finns på: http://www.gnu.org/software/binutils/

Om du har en felrapport för denna manualsida, se: http://sourceware.org/bugzilla/enter_bug.cgi?product=binutils Denna sida hämtades från arkivet:

binutils-with-gold-2.46.tar.gz

hämtat från: https://ftp.gnu.org/gnu/binutils/


den 24 maj 2026.

Om du upptäcker renderingsproblem i denna HTML-version av sidan, eller om du anser att det finns en bättre eller mer aktuell källa för sidan, eller om du har rättelser eller förbättringar av informationen i denna KOLOFON, som inte är en del av den ursprungliga manualsidan, skicka e-post till:

man-pages@man7.org

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/gprof.1.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorservice som har sponsrat Linux.se med webbhotell.