• ベストアンサー

関数の実行順序を知りたい

一般論としてお聞きしたいのですが、 ファイル数が数百もあるようなプログラム中の 関数の実行順序を知りたいときには皆さんはどのようにされてますか? cout(printf)をいろいろなところに置いて 順序を調べるというのがわかりやすいですが、 大きなプログラムになると大変です。 あるいは、関数の実行順序を調べることができる、 使いやすいデバッガを教えていただいてもかまいませんが、 linuxでも使えるツールでお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

g++で-finstrument-functionsすれば-O2でも情報は取れるはずですけどね。試していないので分かりませんが。

その他の回答 (2)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

プロファイラと呼ばれるものを使います。 http://e-words.jp/w/E38397E383ADE38395E382A1E382A4E383A9.html Linuxだとgprofが有名でしょうか。

noname#108554
質問者

お礼

ありがとうございます。 以下のHP: http://blog.livedoor.jp/rydeen999/archives/10063289.html によると、gprofを用いるにあたって 正常にプロファイリングできなくなるので、最適化オプション(-O2等)を付けてはならないことに注意する。 だそうですが、-O2をつけても大丈夫なプロファイラというものはあるのでしょうか?

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

gccなら-finstrument-functionsオプションでコンパイルすると関数の出入り口でプロファリング出来ます。 参考↓ http://www.ibm.com/developerworks/jp/linux/library/l-graphvis/index.html Graphvizで視覚化までする必要は無いですが、プロファイリングの仕組みと自分でツール等を工夫すればよろしいかと。

noname#108554
質問者

お礼

ありがとうございます。 実は書き忘れたことがあります。 ユーザとのインターフェース部分がpythonで、 計算の実行部分がC++で書かれたアプリケーションを 解析しなければならないのですが、 このようなプログラムでも実行順序を調べるツールはあるのでしょうか?

noname#108554
質問者

補足

なお、python部分はとりあえず無視することにします。 C++の関数の実行順序が分かればOKです。

関連するQ&A