我第一次使用覆盖工具gcov来分析一个大型项目。我有这样的目录结构:
HW
-FooHW1.cpp
-FooHW1.h
-FooHW2.cpp
-FooHW2.h
-...
-Makefile.am
Lib1
-FooLib1.cpp
-FooLib1.h
-FooLib2.cpp
-FooLib2.h
-...
-Makefile.am
Lib2
...
-Makefile.am
Lib3
...
-Makefile.am
Main
-main.cpp
-main.h
-Makefile.am
每个目录都有自己的Makefile生成,使用automake生成依赖,无论编译器使用什么是c ++。
由于我的目标是对语句覆盖率的分析,我尝试使用gcov将以下行添加到每个Makefile.am以生成我的.gcno和.gcda文件以便使用gcov:
AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
AM_LDFLAGS = -fprofile-arcs
不幸的是,即使它编译它也不会创建(或链接)几个* .o并且在调用gcov时它通常会给我错误:
undefined __gcov_init
我也尝试过指令:
AM_CXXFLAGS = --coverage
AM_LDFLAGS = --coverage
但它对我来说不起作用。
我想指出这是第一次使用gcov工具和处理大型c ++项目。谢谢你的帮助。
发布于 2018-12-20 10:05:28
lcov使您可以以html格式显示覆盖率的结果(列出的文件甚至是源文件中的行的百分比很好)。
我希望你确实意识到这是一个动态的覆盖,所以你必须实际运行程序以获得任何覆盖(构建应该只创建.gcno
文件)。
发布于 2018-12-20 11:13:36
链接库gocv
-lgcov
应该有所帮助
https://stackoverflow.com/questions/-100008942
复制相似问题