2011-12-13 76 views
4

啓動時自動運行的代碼我有一個幾乎相同的問題,爲How to add code at the entry of every function?Ç在每一個C函數

因爲我維護別人的大型無證項目,我希望有類似

代碼
static C0UNT_identifier_not_used_anywhere_else = 0; 
printf("%s%s:%d#%d", __func__, strrchr(__FILE__,'/'), __LINE__, ++C0UNT_identifier_not_used_anywhere_else); 

對每個函數的入口跑,讓我

  1. 有日誌什麼叫什麼,
  2. 可以告訴,其中的調用它打破的函數。

現有的代碼由數百個源文件組成,所以不能將宏例如

#define ENTRY_CODE ... 
... 
int function() { 
    ENTRY_CODE 
    ... 
} 

在每個功能。我也沒有使用DevStudio,Visual Studio或其他編譯器提供__cyg_profile_func_enter或這樣的擴展。

(可選)我想以相似的風格在退出時打印每個函數的返回值。我也可以這樣做嗎?

+0

這將有助於知道你*使用的是什麼編譯器*使用 –

+0

以及你有哪些可用的調試器。 – ams

+0

@PaulR - 他標記了GCC - 你想要超越那個嗎? –

回答

9

既然你已經標記用gcc它有-finstrument-functions選項:

產生的入口和出口功能的儀器調用。 ...