#include <stdio .h> __attribute__((no_instrument_function)) void __cyg_profile_func_enter(void *func_address, void *call_site){ printf("Enter\n"); } __attribute__((no_instrument_function)) void __cyg_profile_func_exit(void *func_address, void *call_site){ printf("Exit\n"); } void fun(){ printf("Test\n"); } int main(){ fun(); }
編譯時,加上 -finstrument-functions 這個參數。那麼每當呼叫函數前,都會先呼叫 __cyg_profile_func_enter。當函數要 return 時,則會呼叫 __cyg_profile_func_exit。 如同那兩個函數的名字,這功能一開始是為了作到 profile 的功能。不過我們可以拿來做些其他的事
參考書目: BINARY HACKS
沒有留言:
張貼留言