(gprof.info)Call Graph


Next: Implementation Prev: Flat Profile Up: Top

How to Read the Call Graph
**************************

   The "call graph" shows how much time was spent in each function and
its children.  From this information, you can find functions that,
while they themselves may not have used much time, called other
functions that did use unusual amounts of time.

   Here is a sample call from a small program.  This call came from the
same `gprof' run as the flat profile example in the previous chapter.

     granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds
     
     index % time    self  children    called     name
                                                      <spontaneous>
     [1]    100.0    0.00    0.05                 start [1]
                     0.00    0.05       1/1           main [2]
                     0.00    0.00       1/2           on_exit [28]
                     0.00    0.00       1/1           exit [59]
     -----------------------------------------------
                     0.00    0.05       1/1           start [1]
     [2]    100.0    0.00    0.05       1         main [2]
                     0.00    0.05       1/1           report [3]
     -----------------------------------------------
                     0.00    0.05       1/1           main [2]
     [3]    100.0    0.00    0.05       1         report [3]
                     0.00    0.03       8/8           timelocal [6]
                     0.00    0.01       1/1           print [9]
                     0.00    0.01       9/9           fgets [12]
                     0.00    0.00      12/34          strncmp <cycle 1> [40]
                     0.00    0.00       8/8           lookup [20]
                     0.00    0.00       1/1           fopen [21]
                     0.00    0.00       8/8           chewtime [24]
                     0.00    0.00       8/16          skipspace [44]
     -----------------------------------------------
     [4]     59.8    0.01        0.02       8+472     <cycle 2 as a whole>	[4]
                     0.01        0.02     244+260         offtime <cycle 2> [7]
                     0.00        0.00     236+1           tzset <cycle 2> [26]
     -----------------------------------------------

   The lines full of dashes divide this table into "entries", one for
each function.  Each entry has one or more lines.

   In each entry, the primary line is the one that starts with an index
number in square brackets.  The end of this line says which function
the entry is for.  The preceding lines in the entry describe the
callers of this function and the following lines describe its
subroutines (also called "children" when we speak of the call graph).

   The entries are sorted by time spent in the function and its
subroutines.

   The internal profiling function `mcount' (Note: Flat Profile.) is
never mentioned in the call graph.

* Primary
Details of the primary line's contents.
* Callers
Details of caller-lines' contents.
* Subroutines
Details of subroutine-lines' contents.
* Cycles
When there are cycles of recursion, such as `a' calls `b' calls `a'...

automatically generated by info2www