Next: , Previous: , Up: Call Graph   [Contents]


5.2.2 Lines for a Function’s Callers

A function’s entry has a line for each function it was called by. These lines’ fields correspond to the fields of the primary line, but their meanings are different because of the difference in context.

For reference, we repeat two lines from the entry for the function report, the primary line and one caller-line preceding it, together with the heading line that shows the names of the fields:

index  % time    self  children called     name
…
                0.00    0.05       1/1           main [2]
[3]    100.0    0.00    0.05       1         report [3]

Here are the meanings of the fields in the caller-line for report called from main:

self

An estimate of the amount of time spent in report itself when it was called from main.

children

An estimate of the amount of time spent in subroutines of report when report was called from main.

The sum of the self and children fields is an estimate of the amount of time spent within calls to report from main.

called

Two numbers: the number of times report was called from main, followed by the total number of non-recursive calls to report from all its callers.

name and index number

The name of the caller of report to which this line applies, followed by the caller’s index number.

Not all functions have entries in the call graph; some options to gprof request the omission of certain functions. When a caller has no entry of its own, it still has caller-lines in the entries of the functions it calls.

If the caller is part of a recursion cycle, the cycle number is printed between the name and the index number.

If the identity of the callers of a function cannot be determined, a dummy caller-line is printed which has ‘<spontaneous>’ as the “caller’s name” and all other fields blank. This can happen for signal handlers.


Next: , Previous: , Up: Call Graph   [Contents]