我尝试使用GNU链接器的"-wrap=symbol"特性来截取大型应用程序对malloc()的所有调用。该应用程序正在使用一堆共享库。
链接器阶段如下:
我的包装器如下:
链接器阶段如下:
g++ -Wl,-wrap=malloc -o samegame .obj/main.o .obj/qrc_samegame.o -lQt5Quick -lQt5Qml -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread
我的包装器如下:
extern "C" {
void *
__real_malloc(size_t c);
void *
__wrap_malloc(size_t c)
{
printf("my wrapper");
return __real_malloc (c);
}
}
我的问题是,我发现我的包装器被直接从我的应用程序调用的malloc调用调用。在一个共享库中完成的malloc调用没有被挂钩。
我做错了什么吗?