为什么Eclipse GCov插件不提供百分比数字?

时间:2015-08-13 14:25:20

标签: c++ eclipse gcov

我有下面定义的系统,刚刚设置好了。 在单元测试版本中(带有调试信息)我通过提供编译标志“-g -pg --coverage”和链接标志“-pg --coverage -lgcov”来启用gcov输出。

源代码的组织如下:

/
   /src
      MyClass1.cpp
      MyClass1.hpp
      ...
   /test
      MyClass1Test.cpp
      ...

当我执行单元测试时,会生成.gcno和.gcna文件(在src /和test /下面的子目录中)。 在大多数情况下,gcov插件正确读取这些文件。 当我双击一个典型的.gcna文件时,它会显示所有访问过的文件,其中“Total Lines”,“Instrumented Lines”和“Executed Lines”列填写正确(从我可以看出)。双击文件名,启动编辑器,使用非行/访问行的正确着色。

唯一缺少的是整个“Coverage%”(我实际上正在寻找的东西)列的结果,它是空的。我无法获得有关覆盖范围的信息,而不是文件级别和功能级别的信息。

我已经仔细检查过g ++被指示发出调试输出(-g被提供给编译器),因为我怀疑生成的.gcov信息并不完全正确。

如果我打开MyClass1.cpp.gcov,它看起来像这样:

   -:    0:Source:src/MyClass1.cpp
    -:    0:Programs:4
    -:    1:/*EOF*/
    -:    2:/*EOF*/
    -:    3:/*EOF*/
    -:    4:/*EOF*/
    -:    5:/*EOF*/
    -:    6:/*EOF*/
    -:    7:/*EOF*/
    -:    8:/*EOF*/
    -:    9:/*EOF*/
    -:   10:/*EOF*/
    -:   11:/*EOF*/
    -:   12:/*EOF*/
    -:   13:/*EOF*/
    -:   14:/*EOF*/
    -:   15:/*EOF*/
    -:   16:/*EOF*/
    -:   17:/*EOF*/
    -:   18:/*EOF*/
    -:   19:/*EOF*/
#####:   20:/*EOF*/
    -:   21:/*EOF*/
#####:   22:/*EOF*/
#####:   23:/*EOF*/
#####:   24:/*EOF*/
#####:   25:/*EOF*/
#####:   26:/*EOF*/
#####:   27:/*EOF*/
#####:   28:/*EOF*/
#####:   29:/*EOF*/
#####:   30:/*EOF*/
#####:   31:/*EOF*/
#####:   32:/*EOF*/
#####:   33:/*EOF*/
#####:   34:/*EOF*/
#####:   35:/*EOF*/
#####:   36:/*EOF*/
#####:   37:/*EOF*/
#####:   38:/*EOF*/
#####:   39:/*EOF*/
#####:   40:/*EOF*/
#####:   41:/*EOF*/
    -:   42:/*EOF*/
    -:   43:/*EOF*/
    8:   44:/*EOF*/
    -:   45:/*EOF*/
    8:   46:/*EOF*/
    -:   47:/*EOF*/

(依此类推)

这对我来说不合适,我怀疑gcov找不到源代码。但是,这真的很重要吗?行号是存在的,gcov应该能够通过在“Executed Lines”和“Instrumented Lines”列之间进行划分来计算最后一列。

有人知道这里发生了什么吗?

任何帮助都非常感激。

系统详情:

  • i7-4790 CPU @ 3.60GHz,16 GB RAM
  • Windows 7,运行VirtualBox 5.0.0
  • 运行Kubuntu 14.10的VirtualBox(在4核和7 GB RAM上,已安装guest虚拟机)
  • Kubuntu运行14.10.Eclipse C / C ++,rev。火星(4.5.0)
  • 插件:C / C ++多核可视化工具,C / C ++单元测试支持,MyLyn for Jenkins和Gerrit
  • gcov(Ubuntu 4.9.1-16ubuntu6)4.9.1
  • 构建系统:CMake生成“Eclipse CDT - Ninja”项目。
  • 忍者:1.6.0.git
  • g ++(Ubuntu 4.9.1-16ubuntu6)4.9.1
  • 源代码:C ++ 11
  • 测试库:boost 1.55.0

0 个答案:

没有答案