【发布时间】:2015-02-19 19:25:48
【问题描述】:
我尝试使用 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 调用未挂钩。
我做错了吗?
【问题讨论】:
-
这可能只适用于静态库。
-
似乎如此。这是我问题的主要方向。