如何做gcc编译器的源代码覆盖

时间:2018-12-19 15:23:45

标签: c gcc code-coverage gcov

对于给定的示例程序,我想知道在编译过程中使用了GCC源代码的哪一部分。

构建GCC : 我尝试使用

构建gcc-8.2源代码
./src/configure --enable-languages=c,c++
    --disable-bootstrap --disable-multilib BOOT_CFLAGS="-O2 -g -ftest-coverage -fprofile-arcs"

我有一个名为program.c的示例程序

我正在使用xgcc编译program.c

/path/to/xgcc -B path/to/stage1build/gcc -ftest-coverage program.c

以上命令为我提供了程序的代码覆盖率。问题是我不想使用gcov和lcov查找program.c的代码覆盖率。

我想找到gcc源代码的代码覆盖范围。

我尝试在网络上搜索,但是几乎所有答案都通过给出示例.c程序的示例来告诉我如何使用gcov和lcov。

注意: 我知道如何使用gcov和lcov

1 个答案:

答案 0 :(得分:1)

根据在线搜索BOOT_CFLAGS的情况,似乎它为要编译的代码设置了默认的编译器标志。
请参阅此处:12

可能您需要运行以下配置:

./src/configure --enable-languages=c,c++ --disable-bootstrap --disable-multilib CFLAGS="-O2 -g -ftest-coverage -fprofile-arcs" CXXFLAGS="-O2 -g -ftest-coverage -fprofile-arcs"

但是在启用覆盖GCC Build with coverage的情况下进行构建时,您可能还会遇到其他问题。

更好的办法是在GCC邮件列表上发帖,看看有人是否有可能的解决方案。