2012-06-11 23 views
0

我们有一个作为Apache模块(插件)加载的共享库。当然,模块本身会加载其他一些库。我想测试这些库中的一个库是否存在内存泄漏,损坏等问题。看看Valgrind教程,我发现唯一的例子是在它下面运行可执行文件。很明显,我不想在Valgrind下运行完整的Apache服务器。有没有办法指示Valgrind仅在特定的图书馆中查看?仅检查共享库中的内存问题(例如,Apache模块)

一些其他的工具,比如Purify,在过去的(相当遥远的)中使用的工具在编译时需要使用工具,所以只有工具库会为工具生成输出。也许Valgrind以外的其他工具可以这样做?

我们对库有一个命令行包装器,所以是的,我可以在Valgrind下运行它,但是我们可以用它重现的场景非常有限。我希望运行完整的应用程序并在检查内存问题时重现有问题的场景。谢谢!

回答

1

Valgrind提供了一个命令行选项,允许您从文件中指定抑制。你可以用它来压制你的库以外的任何错误。

--suppressions=<filename> [default: $PREFIX/lib/valgrind/default.supp] 
      Specifies an extra file from which to read descriptions of 
      errors to suppress. You may use up to 100 extra suppression 
      files. 

你可以看一下对语法默认抑制文件,但它被描述here

+0

谢谢!希望有这样的事情。在我的情况下指定白名单而不是黑名单会更方便,但这是一个开始 – davka