Невозможно добавить первичный зонд для методов С++

Я пытаюсь добавить 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 говорит, что его не существует.

Есть ли способ решить эту проблему?

Ответ 1

В качестве обходного пути вы можете получить адрес метода с 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