6

まず、MacOSX 10.7.1 を実行しています。C言語で動作するように、Xcode 4とすべてのライブラリをすべて適切にインストールしました。

シェルで gprof コマンドを実行できません。私が行っていることと、受け取っている出力について、順を追って説明します。

ステップ1:

~ roger$ cd Path/to/my/workspace
~ roger$ ls

出力 (ステップ 1):

queue.c         queue.h         testqueue.c

ステップ2:

~ roger$ gcc -c -g -pg queue.c
~ roger$ ls

出力 (ステップ 2):

queue.c         queue.h         queue.o         testqueue.c

ステップ 3:

~ roger$ gcc -o testqueue -g -pg queue.o testqueue.c
~ roger$ ls

出力 (ステップ 3):

queue.c         queue.h         queue.o         testqueue       testqueue.c

ステップ 4:

~ roger$ ./testqueue
~ roger$ ls

出力 (ステップ 4):

enqueue element 16807
head=0,tail=1
enqueue element 282475249
head=0,tail=2
enqueue element 1622650073
head=0,tail=3
enqueue element 984943658
head=0,tail=4
enqueue element 1144108930
head=0,tail=5
enqueue element 470211272
head=0,tail=6
enqueue element 101027544
head=0,tail=7
enqueue element 1457850878
head=0,tail=8
enqueue element 1458777923
head=0,tail=9
enqueue element 2007237709
head=0,tail=10
queue is full
dequeue element 16807
dequeue element 282475249
dequeue element 1622650073
dequeue element 984943658
dequeue element 1144108930
dequeue element 470211272
dequeue element 101027544
dequeue element 1457850878
dequeue element 1458777923
dequeue element 2007237709
queue is empty

gmon.out        queue.h         testqueue
queue.c         queue.o         testqueue.c

ステップ 5:

~ roger$ gprof -b testqueue gmon.out > out.txt
~ roger$ nano out.txt

出力 (ステップ 5):

  GNU nano 2.0.6               File: out.txt


granularity: each sample hit covers 4 byte(s) no time propagated
called/total       parents
index  %time    self descendents  called+self    name           index
called/total       children

^L

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

%   cumulative   self              self     total
time   seconds   seconds    calls  ms/call  ms/call  name

^L

Index by function name

ついに。出力ファイルは次のようになります。

    %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 33.34      0.02     0.02     7208     0.00     0.00  open
 16.67      0.03     0.01      244     0.04     0.12  offtime
 16.67      0.04     0.01        8     1.25     1.25  memccpy
 16.67      0.05     0.01        7     1.43     1.43  write
 16.67      0.06     0.01                             mcount
  0.00      0.06     0.00      236     0.00     0.00  tzset
  0.00      0.06     0.00      192     0.00     0.00  tolower
  0.00      0.06     0.00       47     0.00     0.00  strlen
  0.00      0.06     0.00       45     0.00     0.00  strchr
  0.00      0.06     0.00        1     0.00    50.00  main
  0.00      0.06     0.00        1     0.00     0.00  memcpy
  0.00      0.06     0.00        1     0.00    10.11  print
  0.00      0.06     0.00        1     0.00     0.00  profil
  0.00      0.06     0.00        1     0.00    50.00  report
...

そして、空白のフィールドが表示されます。

ここで検索しましたが、役立つものは何も見つかりませんでした。私はそれをグーグルで検索しましたが、同じことです。

誰かが私を助けてくれれば、とても感謝しています。

4

2 に答える 2

10

gprof は OS X では動作しません。gprof が必要とするシステム コールは、数バージョン前に削除されました。ユーティリティがまだ出荷されている理由は明らかではありません。代替手段は、dtrace および/またはサンプルを使用することです。

于 2011-10-01T00:05:16.360 に答える
1

no need to give gmon.out in the last line, give gprof -b testqueue > out.txt see http://www.network-theory.co.uk/docs/gccintro/gccintro_80.html for further reference

于 2011-12-18T07:12:32.020 に答える