【问题标题】:LCOV reports: 'geninfo: Negative length'LCOV 报告:'geninfo:负长度'
【发布时间】:2014-02-19 18:18:42
【问题描述】:

我正在两个系统(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.

在两个系统上,文件夹和文件是相同的(通过颠覆版本控制)。我猜可能某些路径可能存在问题。 有人知道这是怎么回事吗? 谢谢,领导

附录:我发现它有助于彻底清理项目(删除所有 CMakeFiles 和 CMakeCache)并重新运行 lcov 命令。

【问题讨论】:

    标签: code-coverage gcov lcov


    【解决方案1】:

    如果之前已捕获覆盖信息的某个块不再存在于目标文件中,似乎会发生这种情况。 问题是 .gcno 文件仍会存储此类块的覆盖率信息。

    要解决问题,只需删除 .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”项目就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多