update from FSF
[deliverable/binutils-gdb.git] / gprof / gprof.1
... / ...
CommitLineData
1.\" Copyright (c) 1983, 1990 The Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms are permitted provided
5.\" that: (1) source distributions retain this entire copyright notice and
6.\" comment, and (2) distributions including binaries display the following
7.\" acknowledgement: ``This product includes software developed by the
8.\" University of California, Berkeley and its contributors'' in the
9.\" documentation or other materials provided with the distribution and in
10.\" all advertising materials mentioning features or use of this software.
11.\" Neither the name of the University nor the names of its contributors may
12.\" be used to endorse or promote products derived from this software without
13.\" specific prior written permission.
14.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17.\"
18.\" @(#)gprof.1 6.6 (Berkeley) 7/24/90
19.\"
20.TH GPROF 1 "January 29, 1993"
21.SH NAME
22gprof \- display call graph profile data
23.SH SYNOPSIS
24.B gprof [ \-abcsz ] [ \-e|\-E
25.I name
26.B ] [ \-f|\-F
27.I name
28.B ]
29.B [ \-k
30.I fromname toname
31.B ] [
32.I objfile
33.B [
34.I gmon.out
35.B ]
36.B ]
37.SH DESCRIPTION
38.B gprof
39produces an execution profile of C, Pascal, or Fortran77 programs.
40The effect of called routines is incorporated in the profile of each caller.
41The profile data is taken from the call graph profile file
42\&(`gmon.out' default) which is created by programs
43that are compiled with the
44.B \-pg
45option of
46.BR cc ( 1 ) ,
47.BR pc ( 1 ) ,
48and
49.BR f77 ( 1 ) .
50The
51.B \-pg
52option also links in versions of the library routines
53that are compiled for profiling.
54.B Gprof
55reads the given object file (the default is `a.out')
56and establishes the relation between its symbol table
57and the call graph profile from `gmon.out'.
58If more than one profile file is specified,
59the
60.B gprof
61output shows the sum of the profile information in the given profile files.
62.PP
63.B Gprof
64calculates the amount of time spent in each routine.
65Next, these times are propagated along the edges of the call graph.
66Cycles are discovered, and calls into a cycle are made to share the time
67of the cycle.
68The first listing shows the functions
69sorted according to the time they represent
70including the time of their call graph descendents.
71Below each function entry is shown its (direct) call graph children,
72and how their times are propagated to this function.
73A similar display above the function shows how this function's time and the
74time of its descendents is propagated to its (direct) call graph parents.
75.PP
76Cycles are also shown, with an entry for the cycle as a whole and
77a listing of the members of the cycle and their contributions to the
78time and call counts of the cycle.
79.PP
80Second, a flat profile is given,
81similar to that provided by
82.BR prof ( 1 ) .
83This listing gives the total execution times, the call counts,
84the time in milleseconds the call spent in the routine itself, and
85the time in milleseconds the call spent in the routine itself including
86its descendents.
87.PP
88Finally, an index of the function names is provided.
89.SH OPTIONS
90The following options are available:
91.TP
92.B \-a
93suppresses the printing of statically declared functions.
94If this option is given, all relevant information about the static function
95(e.g., time samples, calls to other functions, calls from other functions)
96belongs to the function loaded just before the static function in the
97\&`objfile' file.
98.TP
99.B \-b
100suppresses the printing of a description of each field in the profile.
101.TP
102.B \-c
103the static call graph of the program is discovered by a heuristic
104that examines the text space of the object file.
105Static-only parents or children are shown
106with call counts of 0.
107.TP
108.BI "\-e " name
109suppresses the printing of the graph profile entry for routine
110.I name
111and all its descendants
112(unless they have other ancestors that aren't suppressed).
113More than one
114.B \-e
115option may be given.
116Only one
117.I name
118may be given with each
119.B \-e
120option.
121.TP
122.BI "\-E " name
123suppresses the printing of the graph profile entry for routine
124.I name
125(and its descendants) as
126.B \-e ,
127above, and also excludes the time spent in
128.I name
129(and its descendants) from the total and percentage time computations.
130(For example,
131.BI "\-E " mcount
132.BI "\-E " mcleanup
133is the default.)
134.TP
135.BI "\-f " name
136prints the graph profile entry of only the specified routine
137.I name
138and its descendants.
139More than one
140.B \-f
141option may be given.
142Only one
143.I name
144may be given with each
145.B \-f
146option.
147.TP
148.BI "\-F " name
149prints the graph profile entry of only the routine
150.I name
151and its descendants (as
152.B \-f ,
153above) and also uses only the times of the printed routines
154in total time and percentage computations.
155More than one
156.B \-F
157option may be given.
158Only one
159.I name
160may be given with each
161.B \-F
162option.
163The
164.B \-F
165option
166overrides
167the
168.B \-E
169option.
170.TP
171.BI "\-k " "fromname toname"
172will delete any arcs from routine
173.I fromname
174to routine
175.IR toname .
176This can be used to break undesired cycles.
177More than one
178.B \-k
179option may be given.
180Only one pair of routine names may be given with each
181.B \-k
182option.
183.TP
184.B \-s
185a profile file `gmon.sum' is produced that represents
186the sum of the profile information in all the specified profile files.
187This summary profile file may be given to later
188executions of gprof (probably also with a
189.BR \-s )
190to accumulate profile data across several runs of an `objfile' file.
191.TP
192.B -z
193displays routines that have zero usage (as shown by call counts
194and accumulated time).
195This is useful with the
196.B \-c
197option for discovering which routines were never called.
198.PP
199.SH FILES
200.ta \w'gmon.sum 'u
201a.out the namelist and text space.
202.br
203gmon.out dynamic call graph and profile.
204.br
205gmon.sum summarized dynamic call graph and profile.
206.SH SEE ALSO
207.BR monitor ( 3 ) ,
208.BR profil ( 2 ) ,
209.BR cc ( 1 ) ,
210.BR prof ( 1 )
211.sp
212``An Execution Profiler for Modular Programs'',
213by S. Graham, P. Kessler, M. McKusick;
214.I
215Software \- Practice and Experience,
216Vol. 13, pp. 671-685, 1983.
217.sp
218``gprof: A Call Graph Execution Profiler'',
219by S. Graham, P. Kessler, M. McKusick;
220.I
221Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
222SIGPLAN Notices, Vol. 17, No 6, pp. 120-126, June 1982.
223.SH HISTORY
224.B Gprof
225appeared in 4.2 BSD.
226.SH BUGS
227The granularity of the sampling is shown, but remains
228statistical at best.
229We assume that the time for each execution of a function
230can be expressed by the total time for the function divided
231by the number of times the function is called.
232Thus the time propagated along the call graph arcs to the function's
233parents is directly proportional to the number of times that
234arc is traversed.
235.PP
236Parents that are not themselves profiled will have the time of
237their profiled children propagated to them, but they will appear
238to be spontaneously invoked in the call graph listing, and will
239not have their time propagated further.
240Similarly, signal catchers, even though profiled, will appear
241to be spontaneous (although for more obscure reasons).
242Any profiled children of signal catchers should have their times
243propagated properly, unless the signal catcher was invoked during
244the execution of the profiling routine, in which case all is lost.
245.PP
246The profiled program must call
247.BR exit ( 2 )
248or return normally for the profiling information to be saved
249in the `gmon.out' file.
This page took 0.022418 seconds and 4 git commands to generate.