2011-09-30 15 views
6

Prima di tutto eseguo MacOSX 10.7.1. Ho installato tutto correttamente, Xcode 4 e tutte le librerie, per lavorare con C lenguage.Il comando gprof non sta creando correttamente out.txt

Ho problemi con il comando gprof in shell. Spiegherò passo passo quello che sto facendo e l'output che sto ricevendo.

Fase 1:

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

uscita (Fase 1):

queue.c   queue.h   testqueue.c 

Fase 2:

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

uscita (Fase 2):

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

Fase 3:

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

uscita (Fase 3):

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

Fase 4:

~ roger$ ./testqueue 
~ roger$ ls 

uscita (Punto 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 

Fase 5 :

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

uscita (Punto 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 

Infine. Il file di output dovrebbe mostrare qualcosa del tipo:

% 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 
... 

E mostra campo vuoto.

Ho cercato qui e non ho trovato nulla di utile. Io google ma la stessa cosa.

Sarei molto grato Se qualcuno potesse aiutarmi per favore.

+0

Si può fare [meglio di gprof] (http://stackoverflow.com/domande/1777556/alternative-to-gprof/1779343 # 1779343). –

risposta

10

gprof non funziona su OS X. La chiamata di sistema di cui ha bisogno è stata rimossa diverse versioni fa. Non è chiaro il motivo per cui l'utility viene ancora spedita. Le alternative sono usare dtrace e/o sample.