С идентификатором сборки не найден, продолжается без символов, встречается с linux perf на кроссплатформенном
У меня есть простая программа, производительность которой должна измеряться на машине Arm Cortex A7 с Linux 3.10 и версии Perf 3.4.
программа:
#include<stdio.h>
int i=0;
void main2(void)
{
for(i=0;i<20000;i++);
}
void main3(void)
{
for(i=0;i<30000;i++);
}
void main4(void)
{
for(i=0;i<40000;i++);
}
void main5(void)
{
for(i=0;i<50000;i++);
}
main(void)
{
printf("Main2\n");
main2();
printf("Main3\n");
main3();
printf("Main4\n");
main4();
printf("Main5\n");
main5();
}
Перфорированные данные инструмента визуализируются с использованием графа пламени
#perf record -F 5000 -g a.out
#perf script 1>temp1 2>temp2
#stackcollapse-perf.pl temp1 > temp
#flamegraph.pl temp > temp.svg
темп.svg ниже
поэтому я сомневаюсь, что это неизвестные следы, почему они произошли, причина, по которой я увеличил частоту дискретизации до 5000, заключается в том, что я не могу просматривать main2 и main3, если их около 99
ОБНОВЛЕНИЕ: выше unknown
Символы вызваны тем, что perf не знает наши символы на кроссплатформенной платформе, поэтому граф просто помещает неизвестное в шестнадцатеричный адрес неизвестных символов, поэтому предлагается предоставить файл vmlinux в качестве входных данных для его report
даже после того, как предоставил это. я наблюдал отчет perf
выдает ошибку вместе с отчетом
[trout_fm] with build id 71f5660a1b9cba292e6bb94a5ba3ac20644852dd not found, continuing without symbols
это потому, что мой идентификатор сборки vmlinux и buildid с perf.data не совпадают? я думаю так!
если так, откуда perf.data каким-то образом получил идентификатор сборки?
при условии, что я тщательно прошил то же изображение и использую тот же vmlinux perf report -k vmlinux
Кто-нибудь может мне помочь, пожалуйста? чтобы преодолеть эту проблему.