处理gcda时,gcov文件校验和不匹配

时间:2014-04-16 07:52:28

标签: code-coverage gcov

使用XCode 5.1后,我收到如下错误:

gcov: Unknown command line argument '-v'.  Try: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/gcov -help'

然后我从这个页面找到答案:XCode 5.1 Unit Test Coverage Analysis Fails On Files Using Blocks

但是,我收到了另一个错误:

Processing *****.gcda
File checksums do not match: 1280071245 != 5 in ().
Invalid .gcno File!
geninfo: ERROR: GCOV failed for ****.gcda!

1 个答案:

答案 0 :(得分:0)

对我来说,原因是* .gcno文件过时且与* .gcda文件不匹配。事实上,他们中的大多数都失踪了。

通过执行以下操作解决了此问题:

  • 确保两者:'仪器程序流程'和'生成的测试覆盖率'已在App的目标和测试目标中设置。

然后我将以下内容添加到AppDelegate中。

- (void)applicationWillTerminate:(UIApplication *)application
{
    extern void __gcov_flush(void);
    __gcov_flush(); //ensure all coverage data is flushed before shutdown
}

。 。这适用于应用程序托管的iOS测试。根据您的要求,您可以将其设置为更少“侵入性”。 (例如,混合覆盖层冲洗,使其仅在您的测试目标中),但这应该是让它首先工作的良好起点。