Я кусаю зубы на этом ...
Мне нужно выполнить профилирование на плате ARM и мне нужно просмотреть графики вызовов.Я пробовал использовать OProfile, Kernel perf и Google Performance Tools.Все работают нормально, но не выводят никакой информации о графе вызовов.
Это привело меня к выводу, что я неправильно компилирую свой код.
Я использую следующие флаги при компиляции своего кода C ++:
Специфика арки:
-march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=vfpv3
Общие сведения:
-fexceptions -fno-strict-aliasing -D_REENTRANT -Wall -Wextra
Отладка (с оптимизацией):
-O2 -g -fno-omit-frame-pointer
Я сделал многоПоиск Google и нашел некоторые связанные темы:
- libunwind?
- dwarf
- (асинхронный-) таблицы раскрутки
-mapcs-frame
Однако я не до конца понимаю, как все это связано.Любые советы о том, как заставить работать графы вызовов?
Примечание (из-за ответа Риана): Мне интересно узнать, почему некоторые методы занимают больше времени (по сравнению с другими) в ARM, чем x86-64.Это не поможет сделать это на другой платформе (хотя мой код компилируется на обоих, и я могу создавать графы вызовов на x86-64).