我可以通过lcov生成带有.gcda文件的.info文件和同一目录下的.gcno文件,但是如何在不同的位置生成.gcda文件和.gcno文件的代码覆盖?
例如,
/Users/swd/Library/Developer/Xcode/DerivedData/test1aaeyiowcssrymfbwtudrqqakuvr/Build/Intermediates/test1.build/Cov/test1.build/Objects-normal/x86_64/AppDelegate.gcno
/Volumes/Data/test1/test1/AppDelegate.gcda
我尝试了--add-tracefile但失败了,输出'lcov:ERROR:在跟踪文件中找不到有效记录'
我的第二个问题是lcov是否有一些命令将我的旧版本覆盖html与我的新版本进行比较,以便我可以找到差异。
有什么想法吗?感谢
答案 0 :(得分:1)
首先需要清除的东西很少,以免其他人混淆。
对于单个对象文件,永远不会在不同位置生成 .gcno
和.gcda
。 (至少这是我从经验中得知的)
通过使用自动构建器或手动命令编译源文件时,它会在同一位置生成.gcno
个文件和.o
个文件。然后,当您执行任何类型的执行时,目标文件会触发覆盖生成函数,并在与“.gcno”和目标文件相同的位置生成.gcda
个文件。
如果它们是针对不同的.gcno
文件生成的,那么它们无论如何都不能一起使用。
答案 1 :(得分:1)
如果设置了环境变量GCOV_PREFIX
,则会发生这种情况。见here
建议的解决方案是通过执行类似
.gcno
文件发布到$GCOV_PREFIX
rsync -acv --filter='+ */' --filter='+ *.gcno' --filter='- *' <directory-containing-object-files> $GCOV_PREFIX