Annotation of 43BSDReno/pgrm/gprof/gprof.1, revision 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.