Вопрос или проблема
Инструменты вроде gdb используют debuginfod для загрузки отладочных символов. Это упрощает отладку двоичных файлов, не беспокоясь о отладочных символах системных библиотек, по крайней мере. Есть ли способ сказать linux perf использовать debuginfod для поиска символов с помощью perf record -g
или что-то подобное?
Ответ или решение
Для того чтобы использовать debuginfod с утилитой perf
для извлечения отладочной информации во время записи сессий, следует выполнить несколько шагов. Вот полное руководство:
Шаг 1: Установите необходимые пакеты
Убедитесь, что у вас установлены необходимые пакеты для работы с perf
и debuginfod
. В большинстве дистрибутивов Linux это можно сделать следующими командами:
# Для Ubuntu/Debian
sudo apt update
sudo apt install linux-tools-common linux-tools-generic
# Для Fedora
sudo dnf install perf
Для использования debuginfod может потребоваться установить библиотеку debuginfod-client
:
# Для Ubuntu/Debian
sudo apt install debugedit
# Для Fedora
sudo dnf install debuginfod-client
Шаг 2: Настройка переменной окружения
Перед запуском perf
, вы должны установить переменные окружения для использования debuginfod. Это делается с помощью следующих команд:
export DEBUGINFOD_URLS="http://debuginfo.example.com/"
Замените http://debuginfo.example.com/
на адрес вашего сервера debuginfod. Если вы используете публичный сервер, вы можете указать, например, https://debuginfod.elfutils.org/
.
Шаг 3: Запуск perf с отладочными символами
Когда вы выполните команду perf record
, добавьте флаг -g
, чтобы включить сбор стека вызовов. Например:
perf record -g <ваша_команда>
Эта команда выполнит вашу программу и соберет данные профилирования, включая информацию о стеке вызовов.
Шаг 4: Анализ результатов с помощью perf report
После окончания работы вашей программы вы можете проанализировать собранные данные, используя команду perf report
:
perf report
При этом perf
автоматически будет пытаться использовать debuginfod для загрузки отладочных символов, если они недоступны локально.
Дополнительные проверки
Если у вас возникли проблемы с получением отладочных символов, проверьте, правильно ли установлены переменные окружения и доступны ли серверы debuginfod. Вы можете использовать debuginfod-find
для проверки доступности отладочной информации:
debuginfod-find <ваш_бинарный_файл>
Эта команда покажет, доступны ли отладочные символы для указанного бинарного файла.
Заключение
С помощью вышеперечисленных шагов вы сможете настроить использование debuginfod с perf record
. Это облегчит процесс отладки и анализа производительности ваших приложений, так как perf
автоматически будет загружать необходимые отладочные символы.