【问题标题】:How to suppress "invalid read" warning for GOT in valgrind?如何在 valgrind 中抑制 GOT 的“无效读取”警告?
【发布时间】:2019-01-29 09:11:48
【问题描述】:

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

【问题讨论】:

    标签: cmake valgrind ctest memcheck got


    【解决方案1】:

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

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

    【讨论】:

    • 这就是我想要避免的......我不想在实现和预期堆栈跟踪发生变化时修改抑制文件。
    • 您可以使用通配符来提供一些灵活性(例如,如果您在具有不同系统库路径/版本的 SuSE 和 RedHat 上运行)。但是,如果您过度使用通配符,则可能会抑制不相关的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多