我每晚都有一套验收测试。我想使用valgrind自动检查代码中的内存泄漏,作为手动检查泄漏的额外安全措施。更新我的脚本以在valgrind下运行我的进程是微不足道的,但是,每个测试都会启动和停止许多进程,并且大约有15000个测试用例,所以我最终会得到数千个单独的报告。
是否有可以合并这些报告的工具?我见过valkyrie,但根据文档,他们不支持valgrind 3.5
答案 0 :(得分:1)
如果您的代码大部分都是干净的,那么您可以保留错误案例。
如果你想要一个工具来组合输出,那么valgrind xml输出格式可能是正确的开始。至少然后解析不应该太难。您还可以将valgrind日志输出到其他文件,以将其与程序的输出分开。此外,当使用--error-exitcode=
检测到内存泄漏时,您可以让valgrind发出错误。
在比较泄漏时,您仍然需要确定什么算作相同的内存泄漏。
答案 1 :(得分:0)
解决问题的方法应该是添加--gen-suppressions=all
选项,并在suppressions files中连接所有忽略的错误。你必须手动排序真正的泄漏和漏洞,但一旦完成,valgrind将只打印真正的泄漏。
然后,如果报告写了任何内容,则可能需要在继续之前解决内存泄漏问题。
--quiet
选项是必需的:以静默方式运行,并且只打印错误消息。如果您正在运行回归测试或使用其他一些自动化测试机器,则非常有用。
答案 2 :(得分:0)
较新版本的Valkyrie(Valgrind的GUI伴侣)拥有您正在寻找的东西。
$ man valkyrie
NAME
valkyrie - graphical front-end to the Valgrind suite of tools for debugging and profiling Linux executables
SYNOPSIS
valkyrie [valkyrie-opts] [valgrind-opts] [prog-and-args]
<snip>
--merge <loglist>
Merge multiple logfiles, discarding duplicate errors
还有一个仅限CLI的变体,名为vk_logmerge
。如果你在Ubuntu上,它可以在valkyrie
包中找到。