2017-03-06 12 views
14

私はUbuntu 16.10を実行していて、gprofを使用してプログラムをプロファイルしようとしています。私はフラグ-pgでコンパイルし、プログラムはシングルスレッドです。実際のコンパイルコマンドは以下のとおりです。gprofが空の出力を生成する

g++ -I. -std=c++11 -Wall -Wextra -O3 -pg -fPIC -Wno-unused-parameter -c -o build/obj/performance/stencil_application.o test/performance/stencil_application.cpp 
g++ -I. -std=c++11 -Wall -Wextra -O3 -pg -Wno-unused-parameter build/obj/performance/stencil_application.o -o build/test/performance/stencil_application 

プログラムは、私はそれを実行したときに終了する数秒かかり、gmon.outという名前のファイルが生成されます。しかし、私がgprof ./build/test/performance/stencil_applicationを実行すると、出力に数字が含まれません。私はテーブルの見出しと、次のような異なるフィールドの説明だけを得ます:

Flat profile: 

Each sample counts as 0.01 seconds. 
    % cumulative self    self  total   
time seconds seconds calls Ts/call Ts/call name  

%   the percentage of the total running time of the 
time  program used by this function. 

cumulative a running sum of the number of seconds accounted 
seconds for by this function and those listed above it. 

self  the number of seconds accounted for by this 
seconds function alone. This is the major sort for this 
      listing. 

calls  the number of times this function was invoked, if 
      this function is profiled, else blank. 

self  the average number of milliseconds spent in this 
ms/call function per call, if this function is profiled, 
      else blank. 

total  the average number of milliseconds spent in this 
ms/call function and its descendents per call, if this 
      function is profiled, else blank. 

name  the name of the function. This is the minor sort 
      for this listing. The index shows the location of 
      the function in the gprof listing. If the index is 
      in parenthesis it shows where it would appear in 
      the gprof listing if it were to be printed. 

Copyright (C) 2012-2016 Free Software Foundation, Inc. 

Copying and distribution of this file, with or without modification, 
are permitted in any medium without royalty provided the copyright 
notice and this notice are preserved. 

        Call graph (explanation follows) 


granularity: each sample hit covers 2 byte(s) no time propagated 

index % time self children called  name 

This table describes the call tree of the program, and was sorted by 
the total amount of time spent in each function and its children. 

など。

-O3-gを付けずにコンパイルしようとしましたが、同じ結果が得られました。誰が何が間違っているのか分かっていますか?

+6

[このバグ](https://bugs.launchpad.net/ubuntu/+source/gcc-6/+bug/1678510)のような音です –

+0

私は同じ問題があります。 – thb

+0

@thb:上のコメントを参照 – Malin

答えて

10

上記のTony Beta Lambdaのコメントで指摘されているように、これはbug in gccです。回避策には2つあります:gcc-4.9にダウングレードするか、フラグ--no-pieでコンパイルしてください。

+0

これはGCC 6.3で動作します。 --no-pieと-pgの両方を使用する。 –

+3

私にとっては、 '--no-pie'(一重ダッシュ)は働きましたが、' --no-pie'は動作しませんでした。 – 7anner

+0

正しいフラグは確かに '-no-pie'です。 – Olivier

関連する問題