之前已经有很多类似的问题问了:
仅举几例。然而,他们都没有帮助我解决我自己的问题。
我正在使用gcc 版本 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)编译我的源代码
g++ -c -pipe -Wno-psabi -std=gnu++11 -Wextra -pedantic -fprofile-arcs -ftest-coverage --coverage -fno-inline -fno-inline-small-functions -fno-default-inline -O0 -fno-elide-constructors -g -Wall -W -o .obj/myclass.o unittest_myclass.cpp
然后我在我的一个源文件上运行gcov (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
gcov unittest_myclass.cpp -o .obj/
此文件包含仅标头类的单元测试。gcov 成功生成了这个头文件的覆盖信息:
File '../include/myclass.h'
Lines executed:11.05% of 173
Creating 'myclass.h.gcov'
但是,myclass.h.gcov中的结果是错误的。对于大多数行 gcov 报告它们不包含可执行代码。对于它检测为可执行的那些,它主要报告它们尚未被执行。但我确信它们正在被执行(我在调试期间验证了它,一些单元测试由于错误等而失败)。不涉及模板。因此我猜由于某种原因 gcov 无法检测到正确的执行。从我上面的命令行参数可以看出:优化已关闭,内联已关闭...
任何想法还有什么可能导致这些问题?