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

时间:2017-10-24 03:50:44

标签: c++ valgrind

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

但我们仍然必须至少运行一次测试。在我的情况下,单个valgrind测试需要太长时间,因为我已经有一个没有--gen-suppressions=all命令运行的以前运行的valgrind报告,有没有办法从该报告中获取抑制命令?

1 个答案:

答案 0 :(得分:1)

当然,如果Valgrind为你做这一代,那将会容易得多。如果你没有太多的抑制来添加,我只建议你试试这个。

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

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

如果您想手动执行此操作,则需要计算从详细日志描述到简洁抑制名称的所有映射。例如

  

条件跳转或移动取决于未初始化的值

对应

  

MEMCHECK:电导率

接下来,对于callstack,如果你只有一个应用程序(没有动态库)并且使用调试信息编译它,你的生活会更容易。你需要解决

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

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

乐趣:FOO
   ...
   有趣:杆

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