- ベストアンサー
関数の実行順序を知りたい
一般論としてお聞きしたいのですが、 ファイル数が数百もあるようなプログラム中の 関数の実行順序を知りたいときには皆さんはどのようにされてますか? cout(printf)をいろいろなところに置いて 順序を調べるというのがわかりやすいですが、 大きなプログラムになると大変です。 あるいは、関数の実行順序を調べることができる、 使いやすいデバッガを教えていただいてもかまいませんが、 linuxでも使えるツールでお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
g++で-finstrument-functionsすれば-O2でも情報は取れるはずですけどね。試していないので分かりませんが。
その他の回答 (2)
- D-Matsu
- ベストアンサー率45% (1080/2394)
プロファイラと呼ばれるものを使います。 http://e-words.jp/w/E38397E383ADE38395E382A1E382A4E383A9.html Linuxだとgprofが有名でしょうか。
- zwi
- ベストアンサー率56% (730/1282)
gccなら-finstrument-functionsオプションでコンパイルすると関数の出入り口でプロファリング出来ます。 参考↓ http://www.ibm.com/developerworks/jp/linux/library/l-graphvis/index.html Graphvizで視覚化までする必要は無いですが、プロファイリングの仕組みと自分でツール等を工夫すればよろしいかと。
お礼
ありがとうございます。 実は書き忘れたことがあります。 ユーザとのインターフェース部分がpythonで、 計算の実行部分がC++で書かれたアプリケーションを 解析しなければならないのですが、 このようなプログラムでも実行順序を調べるツールはあるのでしょうか?
補足
なお、python部分はとりあえず無視することにします。 C++の関数の実行順序が分かればOKです。
お礼
ありがとうございます。 以下のHP: http://blog.livedoor.jp/rydeen999/archives/10063289.html によると、gprofを用いるにあたって 正常にプロファイリングできなくなるので、最適化オプション(-O2等)を付けてはならないことに注意する。 だそうですが、-O2をつけても大丈夫なプロファイラというものはあるのでしょうか?