6

首先,我运行的是 MacOSX 10.7.1。我已经正确安装了所有 Xcode 4 和所有库,以使用 C 语言。

我在 shell 中运行 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 上不起作用。它需要的系统调用在几个版本前已被删除。目前尚不清楚为什么该实用程序仍在发货。替代方法是使用 dtrace 和/或 sample。

于 2011-10-01T00:05:16.360 回答
1

无需在最后一行给出 gmon.out,给出 gprof -b testqueue > out.txt 参见http://www.network-theory.co.uk/docs/gccintro/gccintro_80.html进一步参考

于 2011-12-18T07:12:32.020 回答