Annotation of 43BSDReno/pgrm/gprof/gprof.1, revision 1.1.1.1

1.1       root        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: .Dd July 24, 1990
                     21: .Dt GPROF 1
                     22: .Os BSD 4.2
                     23: .Sh NAME
                     24: .Nm gprof
                     25: .Nd display call graph profile data
                     26: .Sh SYNOPSIS
                     27: .Nm gprof
                     28: .Op options
                     29: .Op Ar a.out Op Ar gmon.out ...
                     30: .Sh DESCRIPTION
                     31: .Nm gprof
                     32: produces an execution profile of C, Pascal, or Fortran77 programs.
                     33: The effect of called routines is incorporated in the profile of each caller.
                     34: The profile data is taken from the call graph profile file
                     35: .Pf \&( Pa gmon.out
                     36: default) which is created by programs
                     37: that are compiled with the
                     38: .Fl pg
                     39: option of
                     40: .Xr cc 1 ,
                     41: .Xr pc 1 ,
                     42: and
                     43: .Xr f77 1 .
                     44: The
                     45: .Fl pg
                     46: option also links in versions of the library routines
                     47: that are compiled for profiling.
                     48: .Nm Gprof
                     49: reads the given object file (the default is
                     50: .Pa a.out)
                     51: and establishes the relation between it's symbol table
                     52: and the call graph profile from
                     53: .Pa gmon.out .
                     54: If more than one profile file is specified,
                     55: the
                     56: .Nm gprof
                     57: output shows the sum of the profile information in the given profile files.
                     58: .Pp
                     59: .Nm Gprof
                     60: calculates the amount of time spent in each routine.
                     61: Next, these times are propagated along the edges of the call graph.
                     62: Cycles are discovered, and calls into a cycle are made to share the time
                     63: of the cycle.
                     64: The first listing shows the functions
                     65: sorted according to the time they represent
                     66: including the time of their call graph descendents.
                     67: Below each function entry is shown its (direct) call graph children,
                     68: and how their times are propagated to this function.
                     69: A similar display above the function shows how this function's time and the
                     70: time of its descendents is propagated to its (direct) call graph parents.
                     71: .Pp
                     72: Cycles are also shown, with an entry for the cycle as a whole and
                     73: a listing of the members of the cycle and their contributions to the
                     74: time and call counts of the cycle.
                     75: .Pp
                     76: Second, a flat profile is given,
                     77: similar to that provided by
                     78: .Xr prof  1  .
                     79: This listing gives the total execution times, the call counts,
                     80: the time in milleseconds the call spent in the routine itself, and
                     81: the time in milleseconds the call spent in the routine itself including
                     82: its descendents.
                     83: .Pp
                     84: Finally, an index of the function names is provided.
                     85: .Pp
                     86: The following options are available:
                     87: .Tw Fl
                     88: .Tp Fl a
                     89: suppresses the printing of statically declared functions.
                     90: If this option is given, all relevant information about the static function
                     91: (e.g., time samples, calls to other functions, calls from other functions)
                     92: belongs to the function loaded just before the static function in the
                     93: .Pa a.out
                     94: file.
                     95: .Tp Fl b
                     96: suppresses the printing of a description of each field in the profile.
                     97: .Tp Fl c
                     98: the static call graph of the program is discovered by a heuristic
                     99: that examines the text space of the object file.
                    100: Static-only parents or children are shown
                    101: with call counts of 0.
                    102: .Tc Fl e
                    103: .Ws
                    104: .Ar name
                    105: .Cx
                    106: suppresses the printing of the graph profile entry for routine
                    107: .Ar name
                    108: and all its descendants
                    109: (unless they have other ancestors that aren't suppressed).
                    110: More than one
                    111: .Fl e
                    112: option may be given.
                    113: Only one
                    114: .Ar name
                    115: may be given with each
                    116: .Fl e
                    117: option.
                    118: .Tc Fl E
                    119: .Ws
                    120: .Ar name
                    121: .Cx
                    122: suppresses the printing of the graph profile entry for routine
                    123: .Ar name
                    124: (and its descendants) as
                    125: .Fl e  ,
                    126: above, and also excludes the time spent in
                    127: .Ar name
                    128: (and its descendants) from the total and percentage time computations.
                    129: (For example,
                    130: .Fl E
                    131: .Ar mcount
                    132: .Fl E
                    133: .Ar mcleanup
                    134: is the default.)
                    135: .Tc Fl f
                    136: .Ws
                    137: .Ar name
                    138: .Cx
                    139: prints the graph profile entry of only the specified routine
                    140: .Ar name
                    141: and its descendants.
                    142: More than one
                    143: .Fl f
                    144: option may be given.
                    145: Only one
                    146: .Ar name
                    147: may be given with each
                    148: .Fl f
                    149: option.
                    150: .Tc Fl F
                    151: .Ws
                    152: .Ar name
                    153: .Cx
                    154: prints the graph profile entry of only the routine
                    155: .Ar name
                    156: and its descendants (as
                    157: .Fl f ,
                    158: above) and also uses only the times of the printed routines
                    159: in total time and percentage computations.
                    160: More than one
                    161: .Fl F
                    162: option may be given.
                    163: Only one
                    164: .Ar name
                    165: may be given with each
                    166: .Fl F
                    167: option.
                    168: The
                    169: .Fl F
                    170: option
                    171: overrides
                    172: the
                    173: .Fl E
                    174: option.
                    175: .Tc Fl k
                    176: .Ws
                    177: .Ar fromname
                    178: .Ws
                    179: .Ar toname
                    180: .Cx
                    181: will delete any arcs from routine
                    182: .Ar fromname
                    183: to routine
                    184: .Ar toname  .
                    185: This can be used to break undesired cycles.
                    186: More than one
                    187: .Fl k
                    188: option may be given.
                    189: Only one pair of routine names may be given with each
                    190: .Fl k
                    191: option.
                    192: .Tp Fl s
                    193: a profile file
                    194: .Pa gmon.sum
                    195: is produced that represents
                    196: the sum of the profile information in all the specified profile files.
                    197: This summary profile file may be given to later
                    198: executions of gprof (probably also with a
                    199: .Fl s  )
                    200: to accumulate profile data across several runs of an
                    201: .Pa a.out
                    202: file.
                    203: .Tp Fl z
                    204: displays routines that have zero usage (as shown by call counts
                    205: and accumulated time).
                    206: This is useful with the
                    207: .Fl c
                    208: option for discovering which routines were never called.
                    209: .Tp
                    210: .Sh FILES
                    211: .Dw gmon.sum
                    212: .Di L
                    213: .Dp Pa a.out
                    214: the namelist and text space.
                    215: .Dp Pa gmon.out
                    216: dynamic call graph and profile.
                    217: .Dp Pa gmon.sum
                    218: summarized dynamic call graph and profile.
                    219: .Dp
                    220: .Sh SEE ALSO
                    221: .Xr monitor 3 ,
                    222: .Xr profil 2 ,
                    223: .Xr cc 1 ,
                    224: .Xr prof 1
                    225: .br
                    226: .Em An Execution Profiler for Modular Programs ,
                    227: by
                    228: S. Graham, P. Kessler, M. McKusick;
                    229: Software  - Practice and Experience,
                    230: Vol. 13, pp. 671-685, 1983.
                    231: .br
                    232: .Em gprof: A Call Graph Execution Profiler ,
                    233: by S. Graham, P. Kessler, M. McKusick;
                    234: Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
                    235: SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 1982.
                    236: .Sh HISTORY
                    237: .Nm Gprof
                    238: appeared in 4.2 BSD.
                    239: .Sh BUGS
                    240: The granularity of the sampling is shown, but remains
                    241: statistical at best.
                    242: We assume that the time for each execution of a function
                    243: can be expressed by the total time for the function divided
                    244: by the number of times the function is called.
                    245: Thus the time propagated along the call graph arcs to the function's
                    246: parents is directly proportional to the number of times that
                    247: arc is traversed.
                    248: .Pp
                    249: Parents that are not themselves profiled will have the time of
                    250: their profiled children propagated to them, but they will appear
                    251: to be spontaneously invoked in the call graph listing, and will
                    252: not have their time propagated further.
                    253: Similarly, signal catchers, even though profiled, will appear
                    254: to be spontaneous (although for more obscure reasons).
                    255: Any profiled children of signal catchers should have their times
                    256: propagated properly, unless the signal catcher was invoked during
                    257: the execution of the profiling routine, in which case all is lost.
                    258: .Pp
                    259: The profiled program must call
                    260: .Xr exit  2
                    261: or return normally for the profiling information to be saved
                    262: in the
                    263: .Pa gmon.out
                    264: file.

unix.superglobalmegacorp.com

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