@mozcelikors Смотрите мой обновленный ответ с более подробной информацией.

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

Использование LTTng для трассировки и использование формата CTF из этогоИспользование 'perf data convert' для создания данных CTF из perf.data

Я пытался использовать второй вариант, так как первый требует установки точек трассировки, и то, что я получил от perf, мне достаточно просто. Итак, при условии, что у меня есть мои perf.data доступны, применяя

perf data convert --to-ctf=./ctf 

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

1-й:

sudo apt-get install libbabeltrace-ctf-dev libbabeltrace-ctf1 libbabeltrace1 libbabeltrace-dev python3-babeltrace

что не совсем решило проблему:Поддержка версий не скомпилирована.

2-й

Я попытался построить babeltrace из источника. Я выкопал и нашел все его зависимости заранее:

sudo apt-get install dh-autoreconf bison libdw-dev libelf-dev flex uuid-dev libpopt-dev
git clone git://git.efficios.com/babeltrace.git
cd babeltrace
./bootstrap
sudo ./configure --prefix=/opt/libbabeltrace LDFLAGS=-L/usr/local/lib
sudo make -j4 prefix=/opt/libbabeltrace
sudo make install prefix=/opt/libbabeltrace

Потом попробовал,

LD_LIBRARY_PATH=/opt/libbabeltrace/lib perf data convert --to-ctf=./ctf

Что также привело к ошибке:Поддержка версий не скомпилирована.

Итак, в общем, сейчас я думаю, что проблема в том, чтобы связать babeltrace с perf. Хотя я пока не знаю, как скомпилировать perf с поддержкой babeltrace. Должен ли я собрать все из модулей ядра (приведенных ниже) или есть обходной путь, чтобы перекомпилировать или адаптировать мой текущий перф с поддержкой babeltrace?

Обратите внимание, что perf / core_ctf_convert реализован в этом модуле ядра:git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git

Также обратите внимание, что я использую Raspbian Jessie на Raspberry Pi 3.

Руководство ценится заранее.

Ура,

Рекомендации:

https://lwn.net/Articles/634333/

http://tracingsummit.org/w/images/9/98/TracingSummit2014-Perf-CTF.pdf

https://patchwork.kernel.org/patch/5883821/

https://patchwork.kernel.org/patch/5858601/

РЕДАКТИРОВАТЬ: РАЗРЕШЕНО Хорошо, это было сложно. Во-первых, все кредиты отправляются на jolsa с kernel.org, который с его предложениями заставил меня понять это.

После того, как libbabeltrace собран из исходного кода, делается следующее:

Установлены некоторые зависимости (некоторые могут не понадобиться, это то, что я установил для выполнения большинства функций трассировки, доступных для Raspbian. К сожалению, bfd недоступен, аааик)

sudo apt-get install libnewt-dev binutils-arm-none-eabi libcrypto++-dev libunwind-dev systemtap-sdt-dev libssl-dev libperl-dev libiberty-dev

Затем,

sudo git clone git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git
cd linux/tools/perf
sudo git checkout perf/core
sudo LIBBABELTRACE=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/ make
sudo LIBBABELTRACE=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/ make install

После того, как установка завершена, perf выполняется с окружением LD_LIBRARY_PATH. то есть

Из каталога, в котором находится perf.data, вызовите следующее, предполагая, что недавно созданный perf находится в / home / user / linux / tools / perf:

sudo LD_LIBRARY_PATH=/opt/libbabeltrace/lib ./home/user/linux/tools/perf/perf data convert --to-ctf=./ctf

И тогда CTF может быть импортирован в TraceCompass :)

Ответы на вопрос(1)

Ваш ответ на вопрос