gcc-Does-ftest覆盖率是否向输出对象注入检测代码?

gcc-Does-ftest覆盖率是否向输出对象注入检测代码?,gcc,code-coverage,gcov,test-coverage,Gcc,Code Coverage,Gcov,Test Coverage,这可能是一个奇怪的问题,但我只是想知道-ftest coverage选项是否会以任何方式改变生成的对象文件 简单地说,这个选项将生成注释文件供gcov使用。我做了一个快速测试,结果似乎是否定的,至少对于这个输入: $ cat foo.c #include <stdio.h> int main() { printf("hello world"); return 0; } $ gcc -c -ftest-coverage foo.c -o foo-f

这可能是一个奇怪的问题,但我只是想知道
-ftest coverage
选项是否会以任何方式改变生成的对象文件

简单地说,这个选项将生成注释文件供gcov使用。我做了一个快速测试,结果似乎是否定的,至少对于这个输入:

$ cat foo.c
#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}
$ gcc -c -ftest-coverage foo.c -o foo-ftest-coverage.o
$ gcc -c foo.c -o foo.o
$ diff foo.o foo-ftest-coverage.o 
$
$cat foo.c
#包括
int main()
{
printf(“你好世界”);
返回0;
}
$gcc-c-ftest coverage foo.c-o foo ftest coverage.o
$gcc-c foo.c-o foo.o
$diff foo.o foo ftest coverage.o
$
然而,这显然不是详尽无遗的。假设传递
-ftest coverage
的唯一副作用是.gcno文件,并且无论是否存在此选项,gcc都将生成相同的对象,这样安全吗