The gprof command does not create the correct out.txt

First of all, I am running MacOSX 10.7.1. I installed everything correctly, Xcode 4 and all the libraries to work with C lenguage.

I am having problems running the gprof command in the shell. I will explain step by step what I am doing and the conclusion I am getting.

Step 1:

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

Output (step 1):

 queue.c queue.h testqueue.c 

Step 2:

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

Output (Step 2):

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

Step 3:

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

Output (step 3):

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

Step 4:

 ~ roger$ ./testqueue ~ roger$ ls 

Output (step 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 

Step 5:

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

Output (step 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 

At last. The output should display something like the following:

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

And he shows an empty field.

I searched here and I did not find anything useful. I google this, but the same.

I would really appreciate if anyone can help me.

+6
c unix bash gprof macos
source share
2 answers

gprof does not work on OS X. The system call that it needs was deleted several versions ago. It is not clear why the utility is still supplied. Alternatives are to use dtrace and / or pattern.

+10
source share

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

+1
source share

All Articles