【问题标题】:checking for memory issues in a shared library only (e.g. an Apache module)仅检查共享库中的内存问题(例如 Apache 模块)
【发布时间】:2012-06-11 20:03:51
【问题描述】:

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

其他一些工具,比如 Purify,我在编译期间(相当遥远的)过去需要检测,因此只有检测的库会为该工具生成输出。也许除了 Valgrind 之外还有其他工具可以做到这一点?

我们确实有相关库的命令行包装器,所以是的,我可以在 Valgrind 下运行它,但我们可以用它重现的场景非常有限。在检查内存问题时,我更愿意运行完整的应用程序并重现有问题的场景。谢谢!

【问题讨论】:

    标签: c++ linux memory-leaks shared-libraries 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

    【讨论】:

    • 谢谢!希望有类似的东西。在我的情况下,指定白名单而不是黑名单会更方便,但这是一个开始
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多