GCOV:使用 GCC 构建时 --coverage 和 --ftest-coverage 有啥区别?

Posted

技术标签:

【中文标题】GCOV:使用 GCC 构建时 --coverage 和 --ftest-coverage 有啥区别?【英文标题】:GCOV: What is the difference between --coverage and --ftest-coverage when building with GCC?GCOV:使用 GCC 构建时 --coverage 和 --ftest-coverage 有什么区别? 【发布时间】:2015-05-04 14:28:59 【问题描述】:

尝试启动并运行代码覆盖率,我只是先阅读文档。我发现有几篇文章提到了使用--coverage 标志进行构建,而其他文章则提到了--ftest-coverage

两个描述似乎都说它们做同样的事情,但我不确定。


这里有两篇文章:

http://bobah.net/d4d/tools/code-coverage-with-gcov

http://www.osadl.org/Dumping-gcov-data-at-runtime-simple-ex.online-coverage-analysis.0.html


有什么区别?

【问题讨论】:

--coverage只是-ftest-coverage -fprofile-arcs这两个开关的缩写。 这些标志是否可以与 g++ 一起使用?? 【参考方案1】:

正如 cmets 中所述,--coverage 是与代码覆盖率相关的其他标志的同义词,具体取决于上下文。

3.11 Program Instrumentation Options:

--覆盖率

此选项用于编译和链接代码以进行覆盖分析。该选项是 -fprofile-arcs 的同义词 -ftest-coverage(编译时)和-lgcov(链接时)。

【讨论】:

以上是关于GCOV:使用 GCC 构建时 --coverage 和 --ftest-coverage 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

链接时如何解决 __gcov_init 未定义的引用问题

gcov 与 CMake 使用单独的构建目录

GCOV/LCOV,GPROF

node-gyp 中应用gcov来测试代码覆盖率

C/C++代码覆盖率工具gcovlcov

gcov:从共享库生成 .gcda 输出?