This post is already over a year old, but since it came out at the top of my Google search results when I had the same problem, I thought I’d answer it here. After some more searching around, I found the answer given in this related StackOverflow question very helpful. On my Ubuntu Raring system, I then ended up doing the following:
- Compile my C++ sources with
-g(fairly obvious, you need debug symbols) -
Run
perfasrecord -g dwarf -F 97 /path/to/my/programThis way
perfis able to handle the DWARF 2 debug format, which is the standard formatgccuses on Linux. The-F 97parameter reduces the sampling rate to 97 Hz. The default sampling rate was apparently too large for my system and resulted in messages like this:Warning: Processed 172390 events and lost 126 chunks! Check IO/CPU overload!and the
perf reportcall afterwards would fail with a segmentation fault. With the reduced sampling rate everything worked out fine. - Once the
perf.datafile has been generated without any errors in the previous step, you can runperf reportetc. I personally like the FlameGraph tools to generate SVG visualizations. -
Other people reported that running
echo 0 > /proc/sys/kernel/kptr_restrictas root can help as well, if kernel symbols are required.