Linux環境で作業しています。私は2つの 'C'ソースパッケージtrainとtest_trainを持っています。gprof:メインプログラムにリンクされている共有ライブラリの関数の呼び出しグラフを生成する方法
- 列車のパッケージにコンパイルがlibtrain.soする
- test_trainリンクlibtrain.so生成し、実行可能な列車の試験
を生成するときに今、私はの呼び出しシーケンスを示しているgprofのを使用してコールグラフを生成したいですメインプログラムの機能とlibtrain.so内の機能
両方のパッケージをコンパイルして、-pgオプションでリンクしています。デバッグレベルはo0です。 ./train-testを実行すると、gmon.outが生成されます。それから私は実行します。ここでは
$ gprof -q ./train-test gmon.out
、出力ショーは列車の試験の関数のグラフを呼び出すことではなく、問題になる可能性がどのようなlibtrain.so
に?
アプリケーションで 'ldd'を実行することで、バイナリがロードしようとしているライブラリの名前(mylib.soとmylib.so.1、mylib.so.1.1など)を調べることができます。 。これは、ライブラリが直接dlopen呼び出しによって開かれている場合にのみエントリを持つべきではありません。 –
[この質問]のようにあまりにも悪いsprofが非常にひどくクラッシュする(http://stackoverflow.com/questions/6216979/what-is-causing-sprof-to-complain-about-inconsistency-detected-by-ld-so ) –
私のプロジェクトで選択されたコンパイラであるMinGWがsprofに付属していない場合はどうなりますか? – Charles