実際は、ここまで難しく考えなくて良い。
調査したい関数名を辞書化しておく。こういうことを開発の標準化にしておくと、文字列にマッチさせるだけで関数トレースができるようになる。ひと手間かけることで作業効率の効果を享受できる。
あるいは、C言語ならばextern宣言するからテキストエディタで関数名を拾いだす。その後で、関数名だけの文字列とディレクトリの2つのファイルをマッチさせるだけでよい。
まず、DIR /b /s で *.c , *.cpp , *.h のディレクトリを辞書化する。
このソースリストは、文字列を後ろから探していく。後ろから見つける理由は、C言語は { があるからです。
Cソースファイルの中にある関数を呼んでいるソースファイルを見つけてまた関数を探す。
その繰り返し。
最近は、C言語だけで開発しているプロジェクトも少なくなっていることと思います。
すっかり、Java・C#に移行していることでしょう。そうであれば、クラスとかメソッドの抽出方法を考えないといけない。
クラスの動き、メソッドの遷移。うまくリバースできない。何か良い方法はないのだろうか。
yacc/lex、bison で行っている字句解析の逆をすれば、関数を抽出できるかもと考えましたが、どうだろうか。
本当は、C言語でテキスト処理を考える前に、yacc/lexでコンパイラをつくる逆のことをすればどの高級言語になっても関数のリストが作成できるのではないかと考えました。
タグジャンプもできるし、エディタで関数のリストを出力できるものがありますが、開発プロジェクトで全体として開発の単位で俯瞰できることができれば良いと考えたことが発端でした。
Eclipseにプラグインするとか最近のエディタでは、自分が考えたことができるかもしれません。
(Visual Studioに呼び出し履歴がありました。)