有一个进程process1,它执行各种库的dl_open
(动态加载/卸载(。让我们将这些库称为插件(plugin1,plugin2、插件3…(,
现在,我可以使用valgrind(同样(在process1中看到内存泄漏。但我想确定,确切的插件可能(主要(促成了泄漏。有简单的方法吗?以及a(将每个插件作为单独的进程运行
通常,当您在启用泄漏检测的Valgrind memcheck下运行应用程序时,它会在应用程序终止时转储泄漏统计信息。
有两种机制可以用于使memcheck在执行期间的其他时间运行泄漏转储。
- 使用Valgrind客户端通信宏来插入代码
- 使用vgdb命令
几年前我写了一篇关于这方面的文章。
举个例子,你的代码中可能有这样的东西
dlclose(myHandle);
VALGRIND_DO_LEAK_CHECK;