内存泄漏- Valgrind动态链接的GCC插件



我使用分析工具valgrind已经有一段时间了。它需要一个可执行文件来运行,即

$    valgrind ./a.out

我想在动态链接的GCC插件上使用它,并列出所花费的时间和插件中使用的每个函数的调用次数。我正在运行GCC插件,如下所示:

$    gcc -fplugin=./plugin.so myfile.c

当我运行以下命令时,valgrind只报告gcc的内存泄漏,而不报告plugin.so的内存泄漏。我需要一种方法来运行valgrind专门在我的插件,这是一个。so文件。

$    valgrind gcc -fplugin=./plugin.so myfile.c
$    gcc -fplugin=./plugin.so myfile.c -wrapper valgrind

这有可能吗?我搜索了很多,但还没有找到任何具体的答案。

我在valgrind-users邮件列表上发布了这个问题,并得到了答案。

http://sourceforge.net/p/valgrind/mailman/message/34174148/

插件不是由GCC本身加载的,而是由GCC的子进程加载的。因此,我们需要使用选项——trace- children =yes来运行valgrind

 $valgrind –trace-children=yes --leak-check=full g++ -fplugin=./plugin.so test0.o

然后,我们需要在valgrind输出中搜索函数的名称,并确定负责加载和执行插件的子进程。尝试在插件中故意引入一些内存泄漏,并在输出中搜索该函数,以识别进程。

相关内容

  • 没有找到相关文章

最新更新