代码之家  ›  专栏  ›  技术社区  ›  Glen

如何合并同一流程多次运行的Valgrind memcheck报告?

  •  4
  • Glen  · 技术社区  · 14 年前

    我有一套每晚进行的验收测试。我想使用valgrind自动检查代码中的内存泄漏,作为手动检查泄漏的额外安全保护。更新脚本以在valgrind下运行流程很简单,但是,每次测试都会启动和停止许多流程,大约有15000个测试用例,因此我最终会得到数千个单独的报告。

    有没有能够合并这些报告的工具?我见过valkyrie,但根据文档,他们不支持valgrind 3.5

    3 回复  |  直到 14 年前
        1
  •  1
  •   Douglas Leeder    14 年前

    如果你的代码基本上是干净的,那么你可以保留错误案例。

    如果您想要一个工具来组合输出,那么valgrind xml输出格式可能是正确的开始。至少解析不应该太难。您还可以将valgrind日志输出到另一个文件,以将其与程序的输出分开。此外,当valgrind检测到内存泄漏时,您还可以让它给出一个错误 --error-exitcode= .

    在比较内存泄漏时,您仍然需要确定哪些是相同的内存泄漏。

        2
  •  0
  •   Doomsday    14 年前

    解决问题的一个方法是添加 --gen-suppressions=all 选项,并且concat完全忽略了 suppressions files .您必须手动对真泄漏和假泄漏进行排序,但一旦完成,valgrind将只打印真泄漏。

    然后,如果报告写了什么,那可能是在继续之前必须解决内存泄漏问题。

    --quiet 选择是必要的: 静默运行,只打印错误消息。如果您正在运行回归测试或拥有其他一些自动化测试机器,那么这将非常有用。

        3
  •  0
  •   BobTuckerman    8 年前

    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上,请打包。

    推荐文章