2012-09-24 46 views
1

我用GCC-fdump-rtl-expand-finstrument-functions做函数调用跟踪,确实器armcc有这种类似的功能呢?如何使用'armcc'编译器来跟踪函数调用?

对于GCC,我使用:

CFLAGS += -finstrument-functions -fdump-rtl-expand 

器armcc是否有类似的编译器选项?我尝试同样的,但似乎他们不工作:

$ armcc -finstrument-functions test.c 
Fatal error: C3900U: Unrecognized option '-finstrument-functions'. 
$ armcc -fdump-rtl-expand test.c 
Fatal error: C3900U: Unrecognized option '-fdump-rtl-expand'. 
+0

你试过了吗? –

+0

是的,我试过了,没有这两个选项 –

回答

1

看来,它允许gcc风格仪表与armcc的选择是不同的。

这里是ARM编译器工具链的摘录:编译器参考(您可以在http://infocenter.arm.com访问参考,如果“注册”在其网站上):

此选项插入GCC风格的仪器仪表要求分析 进入和退出功能。

使用

函数入口之后和函数出口之前,以下分析 函数调用当前函数的地址及其 调用点:

无效__cyg_profile_func_enter(void *的current_func, void * callsite);

void __cyg_profile_func_exit(void * current_func,void * callsite);

限制

你必须提供__cyg_profile_func_enter的定义()和 __cyg_profile_func_exit()。

有必要明确标记__cyg_profile_func_enter()__cyg_profile_func_exit()__attribute__((no_instrument_function))

又见

__attribute__((no_instrument_function))功能属性。

至于-fdump-rtl-expand选项:我不知道(不认为)armcc使用RTL内部。所以我不认为从扩大通过获得日志在这里有任何意义。

+0

感谢您的帮助,我认为仪器可能用于动态跟踪函数调用,并且我为'gcc **使用'-fdump-rtl-expand'来做静态跟踪,** ARM **是否有这种类似'fdump'的函数? –

+0

我不知道。你可以查看手册并搜索一个。我很好奇:为什么你更喜欢把'armcc'比''gcc'更适合ARM? – ArjunShankar

+0

公司dicision ... :(无论如何感谢您的帮助,顺便说一句,你介意给我一个'arm-linux-gcc'工具链下载链接? –