call graph

A 'call graph' is a debugging aid which provides a representation of how one particular function calls other functions. One would use a call graph when trying to figure out what calls a particular function, or is called by a function, particularly when trying to track down why the code is failing.

[insert example here]

 proc a {} {b; c}
 proc b {} {d; c}
 proc c {} {puts ok}
 proc d {} {puts hello}

The call graph here is (directed, caller above callee)

     a
    / \
   b  |
  /  \|
 d    c

[insert pointers to tools for producing call graphs.]

Distinguish static call graph (derived by observing the source code) and dynamic call graph (derived by observing the calling "behavior" of a program).