0

我们编写了一个共享库(比如 slib.so),它在一个永无止境的可执行文件中被 dlopen'ed、used 和 dlclose'd。我想在不附加可执行文件的情况下检查库 slib.so 中的内存泄漏。

Linux 中是否有任何工具可以找出共享库中的内存泄漏?所以我需要一个工具来监控 dlopen 和 dlclose 之间的堆,并在 dlclose 之后报告问题。

4

1 回答 1

0

我需要一个工具来监视 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);
  }
}
于 2018-10-29T15:58:09.173 回答