To help me understand large software projects, I'm looking for a program that reads [Callgrind](http://valgrind.org/docs/manual/cl-manual.html) data (or another common and easily generated call-graph format) of software written in C, specifically so it can show me if and how one function is ultimately called by another, i.e. which functions lie "in between".

Basically like a call graph, except I give it two function names at the beginning and it should just show me if one of them appears in the other's call stack, as well as all the functions in between the two.

This is for software projects that are so large that simply exporting the *entire* call graph as a picture is unrealistic.

I know there is [KCacheGrind](http://kcachegrind.sourceforge.net/html/Home.html) for interactive visualization of Callgrind data, but it seems to have [built-in limitations on what it is willing to show in a single graph, again in order to limit its size](https://stackoverflow.com/a/33555876). For my purpose, however, the program wouldn't have to show any branching, just the "straight line" from one function to another (if it exists), so these kinds of limitations wouldn't be needed.