首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用gcc编译的代码和ARM的A8目标获取调用图分析?

如何利用gcc编译的代码和ARM的A8目标获取调用图分析?
EN

Stack Overflow用户
提问于 2011-11-30 17:22:57
回答 1查看 1.8K关注 0票数 4

我在咬我的牙.

我需要在手臂板上进行分析,并且需要查看调用图。我尝试过使用OProfile、Kernel和谷歌性能工具。所有操作都很好,但不输出任何调用图信息。

这使我得出结论,我没有正确编译我的代码。

在编译C++代码时,我使用下列标志:

Arch专项:

代码语言:javascript
运行
复制
-march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=vfpv3

常规:

代码语言:javascript
运行
复制
-fexceptions -fno-strict-aliasing -D_REENTRANT -Wall -Wextra

调试(优化):

代码语言:javascript
运行
复制
-O2 -g -fno-omit-frame-pointer

我做了很多谷歌搜索,并找到了一些相关的话题:

  • (asynchronous-)unwind-tables

  • -mapcs-frame

  • libunwind?

然而,我不完全理解这些是如何联系在一起的。对于如何使调用图工作,有什么提示吗?

注意(由于Rian的回答):我有兴趣了解一些方法是否和为什么在ARM上花费的时间比x86-64更长(相对于其他方法)。在不同的平台上这样做是没有帮助的(尽管我的代码在这两种平台上都编译,而且我可以在x86-64上进行调用图)。

EN

回答 1

Stack Overflow用户

发布于 2011-11-30 17:32:49

我知道你想在手臂皮层上做你的分析-A8,但是如果你对调用图感兴趣,为什么不为x86编译并运行val差夫的Call研磨工具,并使用kcache研磨检查结果呢?

两个体系结构之间的调用图应该是相同的,即使它们编译函数的方式略有不同,函数之间的关系也不应该改变。

不需要特别旗帜:

代码语言:javascript
运行
复制
valgrind --tool=callgrind -v --dump-every-bb=10000000 ./some-app
kcachegrind &
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8330204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档