无法为C ++方法添加perf探针

时间:2013-11-24 08:05:52

标签: c++ linux perf

我正在尝试在我的库中为C ++方法添加perf probe,但我不断得到以下内容:

$ perf probe --exec=/path/to/file --add='my::Own::Method'
Semantic error :There is non-digit char in line number.

我列出了可用的功能:

$ perf probe --funcs --exec=/path/to/file

尝试了一些也包含在内的C函数。可以为这些添加探针就好了。所以我尝试了错误的名称(例如_ZN2my8Own16Method)和perf probe说它不存在。

有没有解决这个问题的方法?

2 个答案:

答案 0 :(得分:4)

作为一种解决方法,您可以使用objdump获取方法地址,perf probe将接受该地址。

  $ perf probe -x /path/file '0x643f30'
Added new event:
  probe_libfile:abs_643f30 (on 0x643f30 in /path/file)

You can now use it in all perf tools, such as:

    perf record -e probe_libfile:abs_643f30 -aR sleep 1

答案 1 :(得分:1)

您可以运行此命令以查看其C ++乱码形式的所有函数名称:

perf probe --exec=/path/to/file --funcs --no-demangle --filter='*'

找到所需的一个(实际的函数名称将在整齐的标记中),并使用--no-demangle选项将其添加。