更新到 Ubuntu 16.04 后,我正在尝试对我的项目进行覆盖。
我明白了
Deleted 665 files
Writing data to coverage.info.cleaned
lcov: ERROR: cannot write to coverage.info.cleaned!
CMakeFiles/coverage.dir/build.make:57: recipe for target 'CMakeFiles/coverage' failed
make[3]: *** [CMakeFiles/coverage] Error 13
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/coverage.dir/all' failed
make[2]: *** [CMakeFiles/coverage.dir/all] Error 2
CMakeFiles/Makefile2:74: recipe for target 'CMakeFiles/coverage.dir/rule' failed
make[1]: *** [CMakeFiles/coverage.dir/rule] Error 2
Makefile:129: recipe for target 'coverage' failed
make: *** [coverage] Error 2
enter code here
更新之前,我运行覆盖范围没有问题
如果您使用有帮助吗绝对路径而不是相对路径当将文件传递给lcov
?
我遇到了类似的问题lcov
也无法写入文件。
不确定这是否是一个错误lcov
,但问题是它与相对路径混淆了:
lcov -a test_fast_cxxtest_gcov__base.info -a test_fast_cxxtest_gcov__test.info \
-o test_fast_cxxtest_gcov__total.info
Combining tracefiles.
Reading tracefile test_fast_cxxtest_gcov__base.info
Reading tracefile test_fast_cxxtest_gcov__test.info
lcov: WARNING: function data mismatch at /home/phil/ghost/constants.h:1862
Writing data to test_fast_cxxtest_gcov__total.info
lcov: ERROR: cannot write to test_fast_cxxtest_gcov__total.info!
运行它strace
显示它执行chdir("/")
在多个位置,这会将工作目录更改为/
。这解释了为什么它无法写入文件。
一种解决方法是使用绝对路径。例如,如果您使用 GNU make,则可以使用abspath
命令:
lcov -a $(abspath test_fast_cxxtest_gcov__base.info) \
-a $(abspath test_fast_cxxtest_gcov__test.info) \
-o $(abspath test_fast_cxxtest_gcov__total.info)
更改后,终于可以写入文件了。
(其他选项,例如尝试使用设置目录--base-directory
or --directory
据我所知,选项没有效果。
的版本lcov
我测试的版本是1.12。)
这个问题不仅限于 Ubuntu,我在 Arch Linux 上也遇到过这个问题。然而,这可能是 1.12 中引入的回归,所以我报告了它(请参阅问题#77630).
Update:Lcov 不是 GCC 的一部分,因此我最初的错误报告已关闭,但我从 Lcov 邮件列表中得到了答案。问题已经在commit中解决了632c25。基于 Arch Linux 的发行版的用户可以尝试使用最新的快照aur/lcov-git.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)