gprof(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '= 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/ <BR><BR>Tack till [https://Datorhjalp.se Datorservice] som har sponsrat [https://www.linux.se Linux.se] med webbhotell. Kategori:Linuxmanual grupp 1 Kategori:Linuxmanual') |
Admin (diskussion | bidrag) |
||
| (3 mellanliggande sidversioner av samma användare visas inte) | |||
| Rad 1: | Rad 1: | ||
{{DISPLAYTITLE:gprof(1)}} | |||
== NAMN == | |||
'''gprof''' – visa profileringsdata för anropsgraf | |||
== SYNOPSIS == | |||
<pre> | |||
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 ... ] | |||
</pre> | |||
== 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". | |||
<pre> | |||
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 | |||
... | |||
</pre> | |||
: 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)|'''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. | |||
"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: | |||
<pre> | |||
binutils-with-gold-2.46.tar.gz | |||
</pre> | |||
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: | |||
<pre> | |||
man-pages@man7.org | |||
</pre> | |||
= Sidslut = | = Sidslut = | ||
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/gprof.1.html | Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/gprof.1.html | ||
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.