我在咬牙切齿......如何获取使用gcc编译代码和ARM Cortex A8目标的调用图分析?
我需要在ARM板上进行性能分析,并需要查看调用图。我尝试过使用OProfile,Kernel perf和Google性能工具。所有工作正常,但不输出任何调用图信息。
这使我得出结论,我没有正确编译我的代码。
我编译我的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
我di d很多谷歌搜索,并找到一些相关的主题:
- libunwind?
- 矮
- (asynchronous-)放松桌
-mapcs-frame
不过,我并不完全了解这些都连接。有关如何获取通话图表的任何提示?
注意(由于Rian的回答):我有兴趣了解ARM上的某些方法是否以及为什么比x86-64更耗时(与其他方法相比)。它不会帮助在不同的平台上执行此操作(即使我的代码在两者上编译,我都可以在x86-64上执行调用图)。
你确定你想-mfloat-ABI =硬编译?根据我的理解,mfloat-abi = softfp仍然使用NEON,但与现有的二进制文件更兼容,尽管它不如mfloat-abi = hard那么高效。https://wiki.linaro.org/Linaro-arm-hardfloat –
hard应该提高性能,并且我们努力构建我们的整个分配。 –
oprofile取决于内核。你是否重新配置了你的内核来促进分析? – accuya