Annotation of 43BSDTahoe/man/man1/gprof.1, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1983 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)gprof.1     6.3 (Berkeley) 9/30/87
                      6: .\"
                      7: .TH GPROF 1 "September 30, 1987"
                      8: .UC 5
                      9: .SH NAME
                     10: gprof \- display call graph profile data
                     11: .SH SYNOPSIS
                     12: .B gprof
                     13: [ options ] [ a.out [ gmon.out ... ] ]
                     14: .SH DESCRIPTION
                     15: .I gprof
                     16: produces an execution profile of C, Pascal, or Fortran77 programs.
                     17: The effect of called routines is incorporated in the profile of each caller.
                     18: The profile data is taken from the call graph profile file
                     19: .RI ( gmon.out
                     20: default) which is created by programs
                     21: that are compiled with the 
                     22: .B \-pg
                     23: option of 
                     24: .IR cc ,
                     25: .IR pc ,
                     26: and
                     27: .IR f77 .
                     28: The
                     29: .B \-pg
                     30: option also links in versions of the library routines 
                     31: that are compiled for profiling.
                     32: The symbol table in the named object file
                     33: .RI ( a.out
                     34: default)
                     35: is read and correlated with the call graph profile file.
                     36: If more than one profile file is specified,
                     37: the
                     38: .I gprof
                     39: output shows the sum of the profile information in the given profile files.
                     40: .PP
                     41: .I Gprof
                     42: calculates the amount of time spent in each routine.
                     43: Next, these times are propagated along the edges of the call graph.
                     44: Cycles are discovered, and calls into a cycle are made to share the time 
                     45: of the cycle.
                     46: The first listing shows the functions
                     47: sorted according to the time they represent
                     48: including the time of their call graph descendents.
                     49: Below each function entry is shown its (direct) call graph children,
                     50: and how their times are propagated to this function.
                     51: A similar display above the function shows how this function's time and the
                     52: time of its descendents is propagated to its (direct) call graph parents.
                     53: .PP
                     54: Cycles are also shown, with an entry for the cycle as a whole and
                     55: a listing of the members of the cycle and their contributions to the
                     56: time and call counts of the cycle.
                     57: .PP
                     58: Second, a flat profile is given,
                     59: similar to that provided by
                     60: .IR prof (1).
                     61: This listing gives the total execution times, the call counts,
                     62: the number of milliseconds per call in the routine itself, and
                     63: the number of milliseconds per call in the routine itself including
                     64: its descendents.
                     65: .PP
                     66: Finally, an index of the function names is provided.
                     67: .PP
                     68: The following options are available:
                     69: .TP
                     70: .B \-a
                     71: suppresses the printing of statically declared functions.
                     72: If this option is given, all relevant information about the static function
                     73: .RI ( e.g.,
                     74: time samples, calls to other functions, calls from other functions)
                     75: belongs to the function loaded just before the static function in the
                     76: .I a.out
                     77: file.
                     78: .TP
                     79: .B \-b
                     80: suppresses the printing of a description of each field in the profile.
                     81: .TP
                     82: .B \-c
                     83: the static call graph of the program is discovered by a heuristic
                     84: that examines the text space of the object file.
                     85: Static-only parents or children are shown
                     86: with call counts of 0.
                     87: .TP
                     88: .BI \-e " name"
                     89: suppresses the printing of the graph profile entry for routine
                     90: .I name
                     91: and all its descendants
                     92: (unless they have other ancestors that aren't suppressed).
                     93: More than one
                     94: .B \-e
                     95: option may be given.
                     96: Only one
                     97: .I name
                     98: may be given with each
                     99: .B \-e
                    100: option.
                    101: .TP
                    102: .BI \-E " name"
                    103: suppresses the printing of the graph profile entry for routine
                    104: .I name
                    105: (and its descendants) as 
                    106: .BR \-e ,
                    107: above, and also excludes the time spent in
                    108: .I name
                    109: (and its descendants) from the total and percentage time computations.
                    110: (For example,
                    111: .B \-E
                    112: .I mcount
                    113: .B \-E
                    114: .I mcleanup
                    115: is the default.)
                    116: .TP
                    117: .BI \-f " name"
                    118: prints the graph profile entry of only the specified routine
                    119: .I name
                    120: and its descendants.
                    121: More than one
                    122: .B \-f
                    123: option may be given.
                    124: Only one
                    125: .I name
                    126: may be given with each
                    127: .B \-f
                    128: option.
                    129: .TP
                    130: .BI \-F " name"
                    131: prints the graph profile entry of only the routine
                    132: .I name
                    133: and its descendants (as 
                    134: .BR \-f,
                    135: above) and also uses only the times of the printed routines
                    136: in total time and percentage computations.
                    137: More than one
                    138: .B \-F
                    139: option may be given.
                    140: Only one
                    141: .I name
                    142: may be given with each
                    143: .B \-F
                    144: option.
                    145: The
                    146: .B \-F
                    147: option
                    148: overrides
                    149: the
                    150: .B \-E
                    151: option.
                    152: .TP
                    153: .BI \-k " fromname toname"
                    154: will delete any arcs from routine
                    155: .I fromname
                    156: to routine
                    157: .IR toname .
                    158: This can be used to break undesired cycles.
                    159: More than one
                    160: .B \-k
                    161: option may be given.
                    162: Only one pair of routine names may be given with each
                    163: .B \-k
                    164: option.
                    165: .TP
                    166: .B \-s
                    167: a profile file
                    168: .I gmon.sum
                    169: is produced that represents
                    170: the sum of the profile information in all the specified profile files.
                    171: This summary profile file may be given to later
                    172: executions of gprof (probably also with a
                    173: .BR \-s )
                    174: to accumulate profile data across several runs of an
                    175: .I a.out
                    176: file.
                    177: .TP
                    178: .B \-z
                    179: displays routines that have zero usage (as shown by call counts
                    180: and accumulated time).
                    181: This is useful with the 
                    182: .B \-c
                    183: option for discovering which routines were never called.
                    184: .SH FILES
                    185: .ta 1.5i
                    186: .I a.out       
                    187: the namelist and text space.
                    188: .br
                    189: .I gmon.out    
                    190: dynamic call graph and profile.
                    191: .br
                    192: .I gmon.sum    
                    193: summarized dynamic call graph and profile.
                    194: .SH "SEE ALSO"
                    195: monitor(3), profil(2), cc(1), prof(1)
                    196: .br
                    197: ``gprof: A Call Graph Execution Profiler'', by
                    198: Graham, S.L., Kessler, P.B., McKusick, M.K.;
                    199: .IR "Proceedings of the SIGPLAN '82 Symposium on Compiler Construction" ,
                    200: SIGPLAN Notices, Vol. 17, No. 6, pp. 120-126, June 1982.
                    201: .SH BUGS
                    202: Beware of quantization errors.
                    203: The granularity of the sampling is shown, but remains
                    204: statistical at best.
                    205: We assume that the time for each execution of a function
                    206: can be expressed by the total time for the function divided
                    207: by the number of times the function is called.
                    208: Thus the time propagated along the call graph arcs to the function's
                    209: parents is directly proportional to the number of times that
                    210: arc is traversed.
                    211: .PP
                    212: Parents that are not themselves profiled will have the time of 
                    213: their profiled children propagated to them, but they will appear
                    214: to be spontaneously invoked in the call graph listing, and will
                    215: not have their time propagated further.
                    216: Similarly, signal catchers, even though profiled, will appear
                    217: to be spontaneous (although for more obscure reasons).
                    218: Any profiled children of signal catchers should have their times
                    219: propagated properly, unless the signal catcher was invoked during 
                    220: the execution of the profiling routine, in which case all is lost.
                    221: .PP
                    222: The profiled program must call 
                    223: .IR exit (2)
                    224: or return normally for the profiling information to be saved
                    225: in the gmon.out file.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.