我正在两个系统(Windows 7,cygwin,Lcov 1.10)上分析带有LCOV的C代码.在一个系统上,我从来没有遇到过问题,但在另一个系统上我得到了相同的代码:
$ lcov --directory CMakeFiles/UnitTest.dir/main --capture --output-file lcov.log Capturing coverage data from CMakeFiles/UnitTest.dir/main Found gcov version: 4.8.2 Scanning CMakeFiles/UnitTest.dir/main for .gcda files ... Found 59 data files in CMakeFiles/UnitTest.dir/main Processing analyze/analyze.c.gcda [..] Processing measure/measur.c.gcda geninfo: Negative length at /usr/bin/geninfo line 2413.
在两个系统上,文件夹和文件是相同的(通过subversion版本控制).我想,也许某些路径可能存在问题.有人知道这是关于什么的吗?谢谢,领导
附录:我发现有些时候它有助于彻底清理项目(删除所有CMakeFiles和CMakeCache)并重新运行lcov命令.
如果某个块(之前已捕获覆盖信息的块)不再存在于目标文件中,则会发生这种情况.问题是.gcno文件仍将存储此类块的coverage信息.
要解决此问题,只需删除.gcno文件并重建单元测试即可.
例如,我遇到了这样的错误:
[...] Processing CMakeFiles/UnitTest.dir/main.cpp.gcda [...] Processing CMakeFiles/UnitTest.dir/Math/BoundingBox.cpp.gcda geninfo: Negative length at /usr/bin/geninfo line 2413. Processing CMakeFiles/UnitTest.dir/Math/Vectors.cpp.gcda make[3]: *** [source/CMakeFiles/] Error 255
在这种情况下,删除"CMakeFiles/UnitTest.dir/Math/Vectors.cpp.gcno"文件然后重建"UnitTest"项目就足够了.