从现有的 Valgrind 报告创建抑制文件

Creating Suppression File from Existing Valgrind Report

创建 valgrind 报告的最简单方法是 运行 使用命令 --gen-suppressions=all valgrind。

但我们仍然必须 运行 至少测试一次。在我的情况下,单个 valgrind 测试花费的时间太长,并且由于我之前已经有一个 运行 valgrind 报告,该报告是 运行 而没有 --gen-suppressions=all 命令,有没有办法从中获取抑制命令那个报告?

当然可以,但是如果 Valgrind 为您生成,那将会容易得多。如果您没有太多要添加的抑制,我只建议您试试这个。

描述格式 here。看起来像这样

{
    description, preferably unique
    Memcheck:[error type]
    callstack 1
    callstack 2
    etc
}

如果您想手动完成这一切,您将需要计算出从详细日志描述到简洁抑制名称的所有映射。例如

Conditional jump or move depends on uninitialised value(s)

对应

Memcheck:Cond

接下来是调用堆栈,如果您只有一个应用程序(没有动态库)并且它是使用调试信息编译的,那么您的生活会更轻松。你需要锻炼

  • 使用 'fun'
  • 的函数的错位名称
  • 如果没有函数名,则动态库使用'obj'
  • 如果你的 exe 被剥离,那么我认为你必须使用十六进制地址

您可能还想使用通配符。 '*' 匹配路径组件并且...匹配调用堆栈深度中的任何内容。例如

乐趣:foo
...
fun:bar

这将匹配 foo 和 bar 之间任意数量的调用级别。