Использовать отчет о перфорации, берущий символы из определенного двоичного файла - PullRequest
0 голосов
/ 01 января 2019

Я собираю данные с помощью

perf record -o "filename.here" -a --call-graph dwarf -p `pidof binary.here`

И читаю их с помощью

perf report -i "filename.here"

Однако это перестает работать, когда мой исполняемый файл изменяется / перестраивается (из-за того, что я постоянно обновляю еготак как это в стадии разработки) говоря "двоичный файл с идентификатором сборки XXX не может быть найден".Я сохраняю старый двоичный файл, для которого я собрал данные, но, похоже, perf report не может явно загрузить конкретный двоичный файл (есть опция --symfs, но она ищет ВСЕ отладочные символы для всех библиотек / etc, чтотакже не решение).

Еще одно решение - остановить работающий двоичный файл и скопировать вместо него скопированный резервный двоичный файл, но я не могу позволить себе остановить работающий двоичный файл только для этого.Другим решением было бы скопировать резервный двоичный файл на другой сервер, чтобы я мог сохранить его по тому же пути, который пытается найти его.

Существует ли какое-либо реальное лучшее решение для этого?

1 Ответ

0 голосов
/ 03 января 2019

Это сообщение:

binary with build id XXX cannot be found

Есть, потому что perf record в конце фазы записи сохранит копию двоичных файлов с семплами, так что, если вы позже обновите ее, нет проблемэтот конкретный двоичный файл был сохранен в ~/.debug/.build/id/AA/BBCCDDEEFF001122, и именно это perf report и другие потребители будут искать.

Тогда нужно выяснить, почему этот идентификатор сборки не найден.Используете ли вы «perf record» и «perf report» на одном и том же компьютере?

И что:

perf buildid-list -i filename.here

Говорит?

Посмотрите на свой ~ /.каталог отладки / для этого файла.

perf buildid-list -i /path/to/binary

сообщит вам buildid для двоичного файла.

...