#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
沒有留言:
張貼留言