我有一组每晚运行的验收测试。我想使用 valgrind 自动检查我的代码中的内存泄漏,作为手动检查泄漏的额外保障。更新我的脚本以在 valgrind 下运行我的进程是微不足道的,但是,每个测试都会启动和停止许多进程,并且大约有 15000 个测试用例,所以我最终会得到数千个单独的报告。
是否有能够合并这些报告的工具?我见过 valkyrie,但根据文档,他们不支持 valgrind 3.5
我有一组每晚运行的验收测试。我想使用 valgrind 自动检查我的代码中的内存泄漏,作为手动检查泄漏的额外保障。更新我的脚本以在 valgrind 下运行我的进程是微不足道的,但是,每个测试都会启动和停止许多进程,并且大约有 15000 个测试用例,所以我最终会得到数千个单独的报告。
是否有能够合并这些报告的工具?我见过 valkyrie,但根据文档,他们不支持 valgrind 3.5
如果您的代码大部分是干净的,那么您可以保留错误情况。
如果您要使用正确的工具来组合输出,那么 valgrind xml 输出格式可能是正确的开始。至少解析不应该太难。您还可以将 valgrind 日志输出到不同的文件,以将其与程序的输出分开。您还可以让 valgrind 在检测到内存泄漏时给出错误--error-exitcode=
。
在比较泄漏时,您仍然必须确定什么是相同的内存泄漏。
解决您的问题的一种方法应该是添加选项,并在您的抑制文件--gen-suppressions=all
中连接所有忽略的错误。您必须手动对真泄漏和假泄漏进行排序,但是一旦完成,valgrind 将只打印真正的泄漏。
然后,如果报告写了任何内容,那么您可能必须在继续之前解决内存泄漏问题。
--quiet
选项是必要的:静默运行,只打印错误消息。如果您正在运行回归测试或有一些其他自动化测试机器,这很有用。
较新版本的 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
. valkyrie
如果你在 Ubuntu 上,它在包中可用。