如何使用'armcc'编译器来跟踪函数调用?

时间:2012-09-24 08:55:14

标签: gcc arm tracing armcc

我以前使用 gcc -fdump-rtl-expand-finstrument-functions进行函数调用跟踪, 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'.

1 个答案:

答案 0 :(得分:1)

似乎允许使用gcc armcc样式工具的选项不同。

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

  

--gnu_instrument, --no_gnu_instrument

     

此选项插入GCC样式的检测调用以进行性能分析   进入和退出职能。

     

<强>用法

     

在函数输入之后和函数退出之前,进行以下分析   使用当前函数的地址及其函数调用函数   致电网站:

     

void __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。所以我不认为从 expand 传递获取日志在这里有任何意义。