如何告诉 Valgrind 完全抑制特定的 .so 文件?

2024-02-13

我正在尝试在我正在开发的程序上使用 Valgrind,但 Valgrind 为我正在使用的库之一生成一堆错误。我希望能够告诉它抑制涉及该库的所有错误。我可以为抑制文件提出的最接近的规则是

{
   rule name
   Memcheck:Cond
   ...
   obj:/path/to/library/thelibrary.so
}

然而,这并不能完全完成工作。我必须为出现的每种抑制类型(Cond、Value4、Param 等)创建其中一个,并且似乎仍然会错过一些在堆栈跟踪中包含库的错误。

有没有办法给 Valgrind 一个单一的抑制规则,让它完全忽略某个特定的库?即使没有办法制定这样一个涵盖所有抑制类型的规则,是否至少有一种方法可以创建一个忽略特定库中特定抑制类型的所有错误的规则?


对于大多数抑制类型,您可以省略通配符,如下所示:

{
   name
   Memcheck:Cond
   obj:/path/to/lib/lib.so.10.1
}

{
   name
   Memcheck:Free
   obj:/path/to/lib/lib.so.10.1
}

{
   name
   Memcheck:Value8
   obj:/path/to/lib/lib.so.10.1
}

请注意,您必须单独列出每种类型的错误,不能使用通配符。您还必须列出库的完整路径名(如 valgrind 所示,带有版本号等任何“装饰”)。

此外,泄漏的处理方式也不同——对于那些您需要如下所示的东西的人:

{
   name
   Memcheck:Leak
   fun:*alloc
   ...
   obj:/path/to/lib/lib.so.10.1
   ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何告诉 Valgrind 完全抑制特定的 .so 文件? 的相关文章

  • 如何使用 distutils 和/或 setuptools 在 mac os x 上创建 .dylib C 扩展?

    我需要使用 distutils 和 或 setuptools 创建一个 C 扩展 它可以在运行时和编译时动态使用 用于不同的目的 这在 Linux 上不是问题 但在 OS X 上却是问题 默认情况下 distutils 在 OS X 上创建
  • 如何在 C 中链接共享对象?

    我制作了一个使用共享对象的简单程序 用以下命令打开它dlopen 我还编译并链接了共享对象 如下所示 gcc o libmylib so libmylib c shared fPIC Wall gcc o program program c
  • 链接具有不兼容依赖项的库

    我正在开发一个需要两个第三方库的 C 项目 libfoo so and libbar so 我的操作系统是Linux libfoo so动态链接到 libpng14 so 14 1 4 8 EDIT 1 libbar so似乎静态链接到 未
  • Eclipse - @SuppressWarnings("javadoc") 不起作用

    我将 Eclipse 配置为显示有关公共元素缺少 javadoc 注释和标签的警告 这对我来说非常有用 可以很好地记录我的代码 但有时我有一堂课 其中有几个常量描述例如 DFA 的状态或其他东西 不需要记录这些常量 因为它们是不言自明的 所
  • 如何让 valgrind 忽略某些行?

    例如 26460 2 bytes in 1 blocks are still reachable in loss record 2 of 105 26460 at 0x4C28BE3 malloc vg replace malloc c 2
  • ldd 输出静态链接到共享库

    我正在尝试创建一个共享库 libddv3djava so 我编译 libddv3djava so 的源代码 如下所示 Programming intellijprojects ddv3dbindingstest src g c Wall W
  • Netbeans 7.1.1 中的增强

    尝试运行以下命令 include
  • 创建一个简单的 Makefile 来构建共​​享库

    我正在尝试创建一个非常基本的手工制作的 Makefile 来创建一个共享库来说明一点 这是我到目前为止所拥有的 SHELL bin sh CC gcc FLAGS std gnu99 Iinclude CFLAGS fPIC pedanti
  • 通过环境变量告诉 ld 在哪里查找目录

    我正在对课程的 C 和 C 文件进行评分 并且此作业使用 GSL 库 由于我的计算机没有 root 权限 因此我的 GSL 库安装在我的主目录中 因此我需要告诉编译器和链接器在哪里可以找到它 当我自己编写程序时 这不是问题 因为我只需向 g
  • 是否可以让 valgrind 忽略某些库?

    或者最好是全部而不只是我的代码 我的程序使用 Gtk Loudmouth 和其他一些东西 而这两个 以及它们背后的一些 libgcrypto libssl 本身导致了如此多的错误 以至于我无法检测到我自己的错误 是否有可能让 valgrin
  • Valgrind 自动测试——它们在什么地方使用过吗?

    您认为基于 valgrind 工具套件运行一组自动测试有意义吗 您听说过或看到过这样的设置吗 这样的设置可以执行哪些自动 不受人类直觉影响 操作 如果您在单元测试或最终构建测试中检查内存问题 错误代码 那么这是有意义的 可能有两种方法 编写
  • Linux上的轻量级内存泄漏调试

    我首先寻找现有的答案并看到Valgrind是大家最喜欢的 Linux 内存泄漏调试工具 很遗憾Valgrind似乎不适合我的目的 我将尝试解释原因 限制条件 泄漏仅在客户环境中重现 由于某些 法律限制我们必须使用现有的二进制文件 没有重建
  • gcc 4.5 中在链接方面引入的更改?

    我有一个项目生成一个共享库 该库与另一个共享库链接 当我用 gcc 4 4 编译并链接它时 一切正常 没有编译时警告或错误 没有链接时间警告或错误并且 ldd libmyproject so正确报告与其他共享库的依赖关系 另一方面 当我用
  • 调用程序中对库类成员的未定义引用错误

    下面添加了其他问题 2011 年 4 月 11 日 我正在用 C 开发一组跨平台的共享库 DLL Sos 和测试程序 尽管我必须能够支持 C 这些库将仅作为目标代码发布 但测试程序将随源代码一起发布 因此我们的客户可以获得示例代码 因此 我
  • 如何在 javadoc 编译期间抑制警告(代码库范围内)?

    我被困在一个遗留的 Java 代码库中 当你编译它时 它有数千个警告 我很想真正修复所有这些警告的来源 但不幸的是 目前在我的公司这不是一个选择 负责人认为 制造可产生收入的新产品 等其他事情被认为是更优先的事情 想象一下 现在 如果不是因
  • 如何解决“程序主模块为空:运行时不会发生任何事情”

    我在 F 解决方案中有两个项目 1 主要项目有 EntryPoint http msdn microsoft com en us library dd402151 aspx并设置为启动项目 2 support 第二个项目 拥有一组支持模块
  • 如何重命名共享库以避免同名冲突?

    我找到了一个图书馆 libjson http sourceforge net projects libjson 我正在尝试将其构建为共享库并在项目中使用 建造很简单 修复 Makefile 错误后 SHARED 1 make install
  • 编译器 libstdc++ 版本与系统版本

    我试图了解 g 如何选择它链接的 libstdc 版本 以及当库的 系统 版本不同时它意味着什么 我正在使用 gcc g 4 1 2 根据ABI 指南 http gcc gnu org onlinedocs libstdc manual a
  • 静态链接共享对象?或者损坏的文件?

    我有一个从专有来源获得的库 我正在尝试链接它 但出现以下错误 libxxx so 文件无法识别 文件格式无法识别 Collect2 ld 返回 1 退出状态 确实 ldd libxxx so statically linked 这究竟意味着
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include

随机推荐