我有以下结构:
Source_code/build/unix/Makefile
Source_code/code/Lib/src/lib1/a.c在gcc编译选项中提到了-fprofile-arcs和-ftest-coverage选项。它成功生成了a.gcda和a.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文件。
发布于 2014-11-05 09:57:07
在编译代码的文件夹中运行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发布于 2014-09-26 22:20:39
在无法找到源文件的情况下,建议在编译过程中使用绝对路径。而不是使用"../“。
其次,您可以尝试复制gcno和gcda文件以匹配"../../code/lib/src/lib1/a.c“。
或者修复构建规则,以确保未应用损坏的相对路径(如../../)
https://stackoverflow.com/questions/8081910
复制相似问题