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

Creating Suppression File from Existing Valgrind Report

本文关键字:文件 创建 报告 Valgrind      更新时间:2023-10-16

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

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

当然,但如果Valgrind为您生成,会容易得多。我只建议你在没有太多抑制的情况下尝试一下。

此处对格式进行了说明。看起来像这个

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

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

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

对应

Memcheck:Cond

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

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

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

有趣:foo

有趣:酒吧

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