我有下面定义的系统,刚刚设置好了。 在单元测试版本中(带有调试信息)我通过提供编译标志“-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”列之间进行划分来计算最后一列。
有人知道这里发生了什么吗?
任何帮助都非常感激。
系统详情: