I\'m trying to profile a C++ application with gprof on a machine running OSX 10.5.7. I compile with g++ in the usual way, but using -pg flags, run the application and try to
Perhaps not relevant to the OP's question, there is a common scenario where "no time accumulated" happens: if your code calls the kernel or calls libraries not compiled with -pg
, you won't see any time accumulated for time spent there.
If your program terminates in a non-clean manner then the profile data won't get written correctly - how is your program exiting?
Regardless, I'd strongly recommend using Shark instead of gprof - it's very easy to use and superior in pretty much every way to gprof - and doesn't require you to recompile your program.
How fast does your program run? If its extremely quick, it might be too fast to actually profile. I had this problem with a very simple text processing program: when I ran it with my sub-1kb test file it reported all 0s in the time columns. I solved this by running the entire text of The Great Gatsby through it. Try a larger dataset or looping through your main computation a few hundred times.
Does your program use multiple threads? I've experienced this issue with multithreaded programs on Linux, not sure if OS X would have the same problems
Here is a solution to the multithreading issue which I've used sucessfully in the past.
the precision of time in gprof is 0.00
. so maybe your module taking less time
(milli sec/micro sec).Hence, it will show 0.00
and no time accumulated.So, run the whole program about 1000/1000000 times
so that it will come to seconds.At last, divide obtained time with your looping factor (1000/1000000)
and that going to be your processing time. I too faced the same problem and by doing this it gets solved.
I thought I might share this Apple mailing list discussion which I recently ran across.
The behaviour described here is exactly what I am experiencing. It looks like gprof has been broken on OSX for quite some time.
I've resorted to Shark which has been helpfully suggested by Dave Rigby.
Thanks!