2009-11-13 3 views
5

プロジェクト内の現在のC++ファイルを解析し、その中のすべてのメソッド/関数をリストし、関数呼び出しと呼び出し元ツリーを生成したいと考えています。 doxygenが呼び出しツリーを生成する方法を参照できます。C++:関数呼び出しツリーを生成する

私はgccxmlをチェックしましたが、別の関数から呼び出された関数は表示されません。

私が使用できる軽量ツール(オープンソース)を教えてください。

ありがとうございました!

+4

解決したい問題は難解です。 C++は非常に難解な解析言語です。 – jmucchiello

答えて

6

静的呼び出しツリーは、必ずしも実行時呼び出しツリーとは限りません。コールバックと仮想関数は水を濁す。したがって、静的分析はあなたに答えの一部を与えるだけです。

信頼できる呼び出しツリーを得ることができた唯一の方法は、コンパイルされた実行可能ファイルでgprofを実行することでした。出力は、非常に正確なコールツリーにマッサージすることができます。

4

gccxmlは、現在、関数本体(他の関数への呼び出しを含む)を本質的に無視します。現在利用可能なC++の解析オプションの概要はhereです。必ずしも良いニュースを所持しているわけではありませんが、読んでおくことをお勧めします。

+0

彼は彼の分析にとても似ているので、私はほとんど私を泣かせる。 –

2

あなたはDoxygenについて言及しています。それを使わないのはなぜですか?

0

私はおそらく誤解されていますが、ビジュアルスタジオには似たようなものがあります。 関数を右クリックし、[コールブラウザ]を選択します。

0

非同期イベント受信に依存するアプリケーションに対して完全なコールツリー解析を提供することは不可能です。これがテストの方法です。アプリケーションが完全に決定論的である最も単純なケースであっても、これは比較的困難な作業であり、限界値を提供すると主張するだろう。それでは、どのように結果を分析しますか?どのような効果に?

関連する問題