无论如何将两个gcov文件合并为一个

Posted

技术标签:

【中文标题】无论如何将两个gcov文件合并为一个【英文标题】:Is there anyway to merge two gcov files into one 【发布时间】:2013-03-14 18:33:21 【问题描述】:

我在 macosx 平台上使用 gcov 进行覆盖测试。我通过set完成了xcode的配置:

1. Build Settings ==> Generate Test Coverage Files == Yes
2. Build Settings ==> Instrument Progaram Flow == Yes
3. Build Phases ==> Link Binary with library ==> add "libprofile_rt.dylib"

然后生成文件“Test.d, Test.dia, Test.gcno, Test.gcda, Test.o” 然后我使用gcov-4.2 -b Test.gcno命令生成Test.m.gcov文件(这是我想要的),但是下次我再次运行测试用例时,文件“Test.d, Test.dia, Test.gcno, Test.gcda, Test.o”将再次生成,数据将被重置.

所以我有两个问题:

    我有什么办法可以让这些覆盖文件中的数据累积起来,这样我就可以运行我的项目很多次,然后在最后生成文件。

    如果#1 无望,你能告诉我如何将merge two Test.gcno 文件(由两次运行生成)合二为一。我在终端尝试 gcov,下面是 gcov 命令的选项:

    gcov-4.2 -help
    Usage: gcov [OPTION]... SOURCEFILE
    
    Print code coverage information.
    
      -h, --help                      Print this help, then exit
      -v, --version                   Print version number, then exit
      -a, --all-blocks                Show information for every basic block
      -b, --branch-probabilities      Include branch probabilities in output
      -c, --branch-counts             Given counts of branches taken
                                        rather than percentages
      -n, --no-output                 Do not create an output file
      -l, --long-file-names           Use long output file names for included
                                        source files
      -f, --function-summaries        Output summaries for each function
      -o, --object-directory DIR|FILE Search for object files in DIR or called FILE
      -p, --preserve-paths            Preserve all pathname components
      -u, --unconditional-branches    Show unconditional branch counts too
    
    For bug reporting instructions, please see:
    <URL:http://developer.apple.com/bugreporter>.
    

提前感谢您的所有帮助

【问题讨论】:

【参考方案1】:

gcov 的通常工作流程是

    编译并链接覆盖支持 (-fprofile-arcs -ftest-coverage) 可能多次运行可执行文件,可能使用不同的参数/设置。这将在.gcda 文件中创建累积使用信息 调用 gcov 以获取人类可读格式的覆盖率统计信息 (.gcov)

因此,基本上,应用程序的连续运行将产生累积的覆盖率统计信息。只是这些累积会发生在.gcda 文件中,而不是.gcov 文件中,所以每次想要查看更新的统计信息时都必须重新运行gcov

【讨论】:

以上是关于无论如何将两个gcov文件合并为一个的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个文件进行合并?

gcov 警告:摘要的合并不匹配

如何将两个 wav 文件合并/合并为一个 wav 文件?

如何将两个音频文件合并为一个并在javascript中合并后播放

如何将两个 mp3 文件合并为一个(合并/加入)

如何将两个“.jceks”文件合并为一个?