更正了 gcov 在可执行文件和静态库上的用法
Corrected usage of gcov on executable and static library
我有一个使用 gcov 的非常简单的例子:
library.cpp
文件编译后变成 library.a
main.cpp
文件编译成可执行文件并使用 library.a
所有这些都是通过一个简单的 bash 脚本完成的:
g++ -c library.cpp -Wall -fprofile-arcs -ftest-coverage -o library.o
ar rvs library.a library.o
g++ main.cpp -Wall -fprofile-arcs -ftest-coverage library.a -o main
此时我有以下文件(忽略源和构建脚本):
library.o
library.gcno
library.a
main.cpp
main
main.gcno
到目前为止一切顺利。现在我 运行 我的 main
可执行文件,它创建:
main.gcda
library.gcda
一切如预期。现在的问题 - 当我 运行 gcov main.cpp
时,我没有得到 library.cpp 的任何 gcov 文件。这是预期的吗?
我真的需要在任何时间点对我可能拥有的每个源文件调用 gcov
吗?有没有办法调用第一个源文件,即 main.cpp
并让它为每个源 main
继续调用生成覆盖率统计信息?
我似乎获得了很多 main.cpp
使用的核心库代码的 gcov 文件,而无需直接用 gcov (ostream.gov, locale.gcov...) 调用它们不是 library.gcov
通常你会打电话给 gcov *.gcno
。
我有一个使用 gcov 的非常简单的例子:
library.cpp
文件编译后变成library.a
main.cpp
文件编译成可执行文件并使用library.a
所有这些都是通过一个简单的 bash 脚本完成的:
g++ -c library.cpp -Wall -fprofile-arcs -ftest-coverage -o library.o
ar rvs library.a library.o
g++ main.cpp -Wall -fprofile-arcs -ftest-coverage library.a -o main
此时我有以下文件(忽略源和构建脚本):
library.o
library.gcno
library.a
main.cpp
main
main.gcno
到目前为止一切顺利。现在我 运行 我的 main
可执行文件,它创建:
main.gcda
library.gcda
一切如预期。现在的问题 - 当我 运行 gcov main.cpp
时,我没有得到 library.cpp 的任何 gcov 文件。这是预期的吗?
我真的需要在任何时间点对我可能拥有的每个源文件调用 gcov
吗?有没有办法调用第一个源文件,即 main.cpp
并让它为每个源 main
继续调用生成覆盖率统计信息?
我似乎获得了很多 main.cpp
使用的核心库代码的 gcov 文件,而无需直接用 gcov (ostream.gov, locale.gcov...) 调用它们不是 library.gcov
通常你会打电话给 gcov *.gcno
。