0

我正在运行 valgrind memcheck 作为单元测试的一部分。Valgrind 为特定的测试视图发出“大小为 8 的无效读取”并修改进程的 GOT(全局偏移表)。我想最好仅针对 GOT 禁止此警告(即应发出其他“无效读取”警告)。有没有办法在不定义 valgrind 抑制文件的情况下做到这一点?作为论点的一部分,我可以通过 CMake/CTest 传递给 valgrind?

4

1 回答 1

0

如果您确定抑制错误是安全的,那么我建议您执行以下操作。

  1. 使用 --gen-suppressions=all 运行 Valgrind。输出/日志文件将包含一个可在抑制文件中使用的抑制子句。
  2. 为测试创建一个抑制文件并复制在步骤 1 中生成的子句。将“在此处插入抑制名称”位修改为有意义且唯一的内容。
  3. 查看抑制的调用堆栈深度是否合适。如果您在多个平台上运行 Valgrind,您可能需要使用通配符库路径或为每个平台添加更多抑制。
  4. 使用抑制文件更新测试以运行 Valgrind,--suppressions=
于 2019-01-29T12:50:13.803 回答