所以我按照以下说明检查并构建了clang主干http://clang.llvm.org/get_started.html.我可以用--coverage构建我的二进制文件,并运行它来获得.gcno和.gcda文件,但当我运行lcov时,我会得到"GENINFO:…到达了意外的文件结尾"。
现在我陷入困境,来到SO寻求帮助:)
我正在使用Ubuntu 13.04并编写c++11,以防这会有所不同。
我在Ubuntu 13.04上使用lcov时遇到了同样的问题。这是一个在不止一个Ubuntu设置上对我有效的解决方案。
- 你会发现在Ubuntu上有两个版本的gcov。gcov-4.6.4&gcov-4.7.3.默认情况下,gcov链接设置为gcov-4.7.3。将其更改为gcov-4.6.4
- 此外,使用lcov 1.10版本,而不是通过apt-get安装提供的版本
这应该会生成代码覆盖率报告。
编辑:我的是从Ubuntu 12.04升级到13.04。万一你看不到两个版本的gcov。
只是总结@Himanshu已经分享的答案的步骤,以防有人在寻找确切的步骤:
安装gcc 4.6
sudo apt-get-install -y gcc-4.6
我找不到开箱即用的locv 1.10版本,所以我自己编译了它:
git clone https://github.com/linux-test-project/lcov.git
cd lcov
切换到一个新的分支,提交发布lcov 1.10版本作为基础
git checkout -b 1_10 b5c1bdd
编译lcov
sudo make install
确认安装的lcov是1.10
lcov --version
有了所有这些东西,使用命令:
lcov --gcov-tool /usr/bin/gcov-4.6 --capture -d gcov_data/ -o gcov_data/coverage.info
这避免了对系统上默认gcov
的链接进行修补。
然后生成视觉覆盖文件
genhtml -o gcov_data/html gcov_data/coverage.info
其中CCD_ 10是包含CCD_ 11和CCD_。