GPROF(1)                                                              GPROF(1)


NAME
       gprof - display call graph profile data

SYNOPSIS
       gprof [ options ] [ a.out [ gmon.out ... ] ]

DESCRIPTION
       gprof  produces  an  execution  profile of C, Pascal, or Fortran77 pro‐
       grams.  The effect of called routines is incorporated in the profile of
       each  caller.   The  profile  data is taken from the call graph profile
       file (gmon.out default) which is created by programs which are compiled
       with the -pg option of cc, pc, and f77.  That option also links in ver‐
       sions of the library routines which are compiled  for  profiling.   The
       symbol  table in the named object file (a.out default) is read and cor‐
       related with the call graph profile file.  If  more  than  one  profile
       file is specified, the gprof output shows the sum of the profile infor‐
       mation in the given profile files.

       First, a flat profile is given, similar to that  provided  by  prof(1).
       This  listing  gives the total execution times and call counts for each
       of the functions in the program, sorted by decreasing time.

       Next, these times are propagated along the edges  of  the  call  graph.
       Cycles  are  discovered,  and  calls into a cycle are made to share the
       time of the cycle.  A second listing shows the functions sorted accord‐
       ing  to  the time they represent including the time of their call graph
       descendents.  Below each function entry  is  shown  its  (direct)  call
       graph children, and how their times are propagated to this function.  A
       similar display above the function shows how this function’s  time  and
       the  time  of  its descendents is propagated to its (direct) call graph
       parents.

       Cycles are also shown, with an entry for the cycle as  a  whole  and  a
       listing of the members of the cycle and their contributions to the time
       and call counts of the cycle.

       The following options are available:

       -a     suppresses the printing of statically  declared  functions.   If
              this  option is given, all relevant information about the static
              function (e.g., time samples, calls to  other  functions,  calls
              from other functions) belongs to the function loaded just before
              the static function in the a.out file.

       -b     supresses the printing of a description of  each  field  in  the
              profile.

       -c     the  static call graph of the program is discovered by a heuris‐
              tic which examines the text space of the object  file.   Static-
              only parents or children are indicated with call counts of 0.

       -e name
              suppresses  the  printing of the graph profile entry for routine
              name and all its descendants (unless they have  other  ancestors
              that  aren’t suppressed).  More than one -e option may be given.
              Only one name may be given with each -e option.

       -E name
              suppresses the printing of the graph profile entry  for  routine
              name  (and  its descendants) as -e, above, and also excludes the
              time spent in name (and its descendants) from the total and per‐
              centage  time computations.  (For example, -E mcount -E mcleanup
              is the default.)

       -f name
              prints the graph profile entry of  only  the  specified  routine
              name and its descendants.  More than one -f option may be given.
              Only one name may be given with each -f option.

       -F name
              prints the graph profile entry of only the routine name and  its
              descendants  (as  -f, above) and also uses only the times of the
              printed routines in  total  time  and  percentage  computations.
              More  than  one  -F  option  may be given.  Only one name may be
              given with each -F option.   The  -F  option  overrides  the  -E
              option.

       -s     a  profile file gmon.sum is produced which represents the sum of
              the profile information in  all  the  specified  profile  files.
              This  summary profile file may be given to subsequent executions
              of gprof (probably also with a -s) to  accumulate  profile  data
              across several runs of an a.out file.

       -z     displays  routines  which  have zero usage (as indicated by call
              counts and accumulated time).  This  is  useful  in  conjunction
              with  the  -c  option  for discovering which routines were never
              called.

FILES
       a.out           the namelist and text space.
       gmon.out        dynamic call graph and profile.
       gmon.sum        summarized dynamic call graph and profile.

SEE ALSO
       monitor(3), profil(2), cc(1), prof(1)
       ‘‘gprof: A Call Graph Execution Profiler’’, by Graham,  S.L.,  Kessler,
       P.B.,  McKusick, M.K.; Proceedings of the SIGPLAN 82 Symposium on Com
       piler Construction, SIGPLAN Notices, Vol. 17, No. 6, pp. 120-126,  June
       1982.

BUGS
       Beware  of  quantization  errors.   The  granularity of the sampling is
       shown, but remains statistical at best.  We assume that  the  time  for
       each execution of a function can be expressed by the total time for the
       function divided by the number of times the function is  called.   Thus
       the  time propagated along the call graph arcs to parents of that func‐
       tion is directly proportional to the number of times that arc  is  tra‐
       versed.

       Parents  which  are not themselves profiled will have the time of their
       profiled children propagated to them, but they will appear to be  spon‐
       taneously  invoked  in  the call graph listing, and will not have their
       time propagated further.  Similarly, signal catchers, even though  pro‐
       filed,  will  appear  to be spontaneous (although for more obscure rea‐
       sons).  Any profiled children of  signal  catchers  should  have  their
       times propagated properly, unless the signal catcher was invoked during
       the execution of the profiling routine, in which case all is lost.

       The profiled program must call exit(2) or return normally for the  pro‐
       filing information to be saved in the gmon.out file.


4.2 Berkeley Distribution       April 29, 1985                        GPROF(1)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 754
Valid CSS Valid XHTML 1.0 Strict