【问题标题】:Unable to suppress errors in valgrind无法抑制 valgrind 中的错误
【发布时间】:2015-02-13 22:00:34
【问题描述】:

有人可以告诉我如何向 valgrind 添加自定义抑制的示例吗?我 99.99% 确定它会为字符串类生成错误,并且我想抑制 .supp 文件中的错误。我认为只需将其添加到目录或将我的函数添加到 default.supp 就足够简单了,但不会抑制错误。这就是我所做的:

1) 我用 --gen-suppressions=yes 运行 valgrind 2) 为下面列出的我的错误获得了生成的抑制

  #Custom Suppression
  {
     MyCustomSupression
     Memcheck:Addr1
     fun:strlen
     fun:_ZNSsC1EPKcRKSaIcE
     obj:/home/steve/path/to/the/program
     obj:/home/steve/path/to/the/program
     obj:/home/steve/path/to/the/program
     obj:/home/steve/path/to/the/program
     obj:/home/steve/path/to/the/program
     obj:/home/steve/path/to/the/program
     obj:/home/steve/path/to/the/program
     fun:(below main)

}

3)我将文件添加到我的eclipse文件夹中default.supp所在的目录

4) 我再次运行了 valgrind,但错误仍然存​​在

注意:我还尝试将抑制添加到 default.supp 文件中。我错过了一步吗?我做错了什么?

【问题讨论】:

  • “我 99.99% 确定它会为字符串类生成错误” 你有一个最小的例子来证明这一点吗? std::string 应该干净利落地 valgrind。
  • @BaummitAugen 这可能取决于库、编译器、系统和月相。我在 valgrind 中看到了很多 std::string 错误。

标签: c++ linux valgrind


【解决方案1】:

我很确定你需要在运行 valgrind 时指定抑制文件,像这样

##Generate suppressions
valgrind --gen-suppressions=yes myProgram
## Cut-Paste into string.supp
##Now rerun valgrind
valgrind --suppressions=./string.supp myProgram

更多详情请参阅command line options

【讨论】:

  • 我已经这样做了(对不起,意味着包含那个位)但我收到错误:“致命:无法打开抑制文件“string.supp”
  • 您是否指定了文件的完整路径?请显示您使用的命令。
  • 你知道,那是我的问题。我想如果我把它放在同一个目录中,我就不必命令完整路径,但现在我做到了,我找到了。我将你的答案标记为正确,但你不会知道如何做到这一点,所以我不必给出完整的路径,对吗?只是一些更简化的东西?
  • 将抑制文件放在运行 valgrind 的目录中。或者在你的主目录中使用 ~/string.supp.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
相关资源
最近更新 更多