我正在尝试在我的库中为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
说它不存在。
有没有解决这个问题的方法?
答案 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
选项将其添加。