Я пытаюсь использовать perf инструмент для MIPS и сталкиваюсь с некоторыми проблемами при получении бэк-стэков.
Как включить FRAME_POINTER для mips? У меня включен DEBUG_KERNEL, но похоже, что -fno-omit-frame-pointer не применяется для арки MIPS в ядре .
Означает ли это, что для MIPS невозможно выполнить разматывание стека на основе указателя кадра с помощью perf?
Я не вижу, чтобы набор инструментов mips жаловался на флаг -fno-omit-frame-pointer
РЕДАКТИРОВАТЬ1
Я могу записывать перф события. Пример выходных данных для отчета о перфекте
Отчет не очень поможет без разматывания стека.
# ./perf --version
perf version 5.6.rc2.gd04712cd3bd7
# uname -a
Linux localhost 3.14.28-1.19 #1 SMP Mon Feb 17 16:48:44 IST 2020 mips GNU/Linux
EDIT2
Обнаружены определенные функции
Auto-detecting system features:
... dwarf: [ on ]
... dwarf_getlocations: [ on ]
... glibc: [ on ]
... gtk2: [ OFF ]
... libaudit: [ on ]
... libbfd: [ OFF ]
... libcap: [ OFF ]
... libelf: [ on ]
... libnuma: [ OFF ]
... numa_num_possible_cpus: [ OFF ]
... libperl: [ OFF ]
... libpython: [ OFF ]
... libcrypto: [ OFF ]
... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... lzma: [ on ]
... get_cpuid: [ OFF ]
... bpf: [ OFF ]
... libaio: [ on ]
... libzstd: [ OFF ]
... disassembler-four-args: [ OFF ]
EDIT3
Я вижу, что проверка функций для libunwind не удалась
cat linux-5.6-rc2/tools/build/feature/test-libunwind.make.output
/tmp/ccQnV5jZ.o: In function `main':
test-libunwind.c:(.text+0x1c): undefined reference to `_Umips_create_addr_space'
test-libunwind.c:(.text+0x4c): undefined reference to `_Umips_init_remote'
test-libunwind.c:(.text+0x70): undefined reference to `_Umips_dwarf_search_unwind_table'
collect2: error: ld returned 1 exit status
Если я вижу make-файл для функциональных тестов, связывание libunwind для MIPS не выполняется.
EDIT4
Обычный рабочий процесс
perf record -F 99 -ag -e cycles:u -- sleep 5
perf report
Попытка использовать карлика
# perf record -F 99 -ag --call-graph=dwarf -- sleep 10
Error:
The sys_perf_event_open() syscall returned with 89 (Function not implemented) for event (cycles).
/bin/dmesg | grep -i perf may provide additional information.
dmesg пусто