我们编写了一个共享库(比如 slib.so),它在一个永无止境的可执行文件中被 dlopen'ed、used 和 dlclose'd。我想在不附加可执行文件的情况下检查库 slib.so 中的内存泄漏。
Linux 中是否有任何工具可以找出共享库中的内存泄漏?所以我需要一个工具来监控 dlopen 和 dlclose 之间的堆,并在 dlclose 之后报告问题。
我们编写了一个共享库(比如 slib.so),它在一个永无止境的可执行文件中被 dlopen'ed、used 和 dlclose'd。我想在不附加可执行文件的情况下检查库 slib.so 中的内存泄漏。
Linux 中是否有任何工具可以找出共享库中的内存泄漏?所以我需要一个工具来监控 dlopen 和 dlclose 之间的堆,并在 dlclose 之后报告问题。
我需要一个工具来监视 dlopen 和 dlclose 之间的堆并在 dlclose 之后报告问题。
任何标准泄漏检测工具都可以使用:Valgrind、Leak Sanitizer、TCMalloc heap checker 等。
您需要做的就是编写一个简单的可执行包装器,例如:
#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);
}
}