2

我有以下结构:

Source_code/build/unix/Makefile
Source_code/code/Lib/src/lib1/a.c

gcc 编译选项中提到了and-fprofile-arcs选项。-ftest-coverage它成功生成a.gcdaa.gcno文件。并且当给出以下选项时gcov a.c,它会正确地为执行的行提供统计信息。

但它无法a.c.gcov正确生成文件,它只包含/* EOF */.

它抛出以下消息:

../../code/lib/src/lib1/a.c:creating 'a.c.gcov'
../../code/lib/src/lib1/a.c:cannot open source file

请让我知道生成a.c.gcov文件。

4

2 回答 2

1

从编译代码的文件夹中运行 gcov 对我有用。

在 .gcov 文件的顶部,它说明了完整的文件路径。前任。:

         -:    0:Source:tmp.c
         -:    0:Graph:tmp.gcno
         -:    0:Data:tmp.gcda
         -:    0:Runs:1
         -:    0:Programs:1
         -:    1:#include <stdio.h>
         -:    2:
         -:    3:int main (void)

如果它位于不同的文件夹中,即 /path/tmp.c,请执行以下操作:

gcov ./path/tmp.c -o ./path/tmp

https://gcc.gnu.org/ml/gcc-help/2010-04/msg00080.html

于 2014-11-05T01:57:07.470 回答
0

在找不到源文件的情况下,建议在编译中使用绝对路径。而不是使用“../”。

其次,您可以尝试复制 gcno 和 gcda 文件以匹配“../../code/lib/src/lib1/ac”。

或者修复构建规则以确保没有应用损坏的相对路径(如 ../../)

于 2014-09-26T14:20:38.900 回答