How to interpret addresses in Google perf tools CPU profiler

1.8k views Asked by At

My C++ program is consuming a lot of CPU, and more so as it runs. I used Google Performance Tools to profile CPU usage, and this is what I got:

(pprof) top
Total: 1343 samples
    1330  99.0%  99.0%     1330  99.0% 0x0000000801dcb11c
       7   0.5%  99.6%        7   0.5% 0x0000000801dcb11e
       4   0.3%  99.9%        4   0.3% program::threadWorker
       1   0.1%  99.9%        1   0.1% 0x0000000801dcb110
       1   0.1% 100.0%        1   0.1% 0x00007fffffffffc0

However, only 1 out of the 5 processes shown here is an actual function name; the rest are addresses. How can I find out what these addresses pertain to? (Of course, I am most interested in the first address shown above)

Edit: This is how I ran the profiler:

env CPUPROFILE=prof.out ./a.out
[kill program]

pprof ./a.out prof.out

Also, I found the root cause by code inspection. But it would still be nice to have the profiler pinpoint the culprit function rather than an address.

1

There are 1 answers

3
Stephen Johnson On

Is it possible you haven't specified the executable when loading the results in google-pprof?

I run it as:

$ google-pprof executable /tmp/executable.hprof --text | less

and can see the function names just fine. Or that those methods are in some shared library not in your path when you run google-pprof?