2012-03-01 3 views
1

プログラムのプロファイルに問題があります。gprofをメイクファイルで使用する

私はこのように別々に各機能をコンパイル:

function1.o:  function1.cpp 
    g++ -g -pg -z -c function1.cpp 

それから私はこのようなすべてのものを一緒にリンク:私は、

exec: function1.o function2.o function3.o main.o 
    g++ -g -pg -z -c -o exec function1.o function2.o function3.o main.o 

をしかし、私は./execでプログラムを実行すると、その後gprof execでデータをプロファイリングプロファイリングデータがない場合は、次のようになります。

granularity: each sample hit covers 4 byte(s) no time accumulated 

何か間違っていますか?

+1

代わりにvalgrind-callgrindとkcachegrindを使用することを検討しましたか?私も同様の問題があり、gprofでCMAKEの作業を行うことができず、callgrindを使用して終了しました。 kcachegrindの視覚化が役立ちます。 –

+0

なぜ、問題は 'make 'の使用に関連していると思いますか? 'make 'を使わずに手でコンパイルすると問題は見えませんか? – eriktous

答えて

0

gprofがサンプルを収集するのに十分な時間プログラムが実行されない可能性があります。

メインループを複数回実行することで、実行時間を任意に増やすことができます。

Linuxで実行している場合は、実際にはより良いプロファイリングツールであるperfもお勧めします。

関連する問題