我们编写了一个共享库(例如slib.so),该库在永无止境的可执行文件中被dlopen,使用和dlclose。 我想检查库slib.so中是否存在内存泄漏,而无需附加可执行文件。
Linux中是否有任何工具可以找出共享库中的内存泄漏?因此,我需要一个工具来监视dlopen和dlclose之间的堆,并在dlclose之后报告问题。
答案 0 :(得分:0)
我需要一个工具来监视dlopen和dlclose之间的堆,并在dlclose之后报告问题。
任何标准的泄漏检测工具都可以使用:Valgrind,Leak Sanitizer,TCMalloc堆检查器等。
您需要做的只是编写一个简单的可执行包装程序,如下所示:
#include <dlfcn.h>
int main()
{
for (int j = 0; j < 10; j++) {
void *h = dlopen("libslib.so", RTLD_NOW);
// optionally exercise the library here.
dlclose(h);
}
}