无法生成* .c.gcov文件

时间:2011-11-10 15:25:57

标签: gcc gcov

我有以下结构:

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

gcc编译选项中提到了-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文件。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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