2012-09-24 71 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'工具鏈下載鏈接? –