无法生成 *.c.gcov 文件

发布于 2024-12-14 18:50:49 字数 534 浏览 0 评论 0原文

我有以下结构:

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

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

但无法正确生成acgcov文件,它只包含/* EOF */

它抛出以下消息:

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

请让我知道生成 acgcov 文件。

I have the following structure:

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

The -fprofile-arcs and -ftest-coverage options are mentioned in the gcc compilation option. It successfully generates the a.gcda and a.gcno files. And when given the following option gcov a.c, it gives the statistics correctly for lines executed.

But it is unable to generate the a.c.gcov file properly, it only contains /* EOF */.

It throws the following messages:

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

Please let me know to generate the a.c.gcov file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光匆匆的小流年 2024-12-21 18:50:51

如果找不到源文件,建议在编译时使用绝对路径。而不是使用“../”。

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

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

In a case when source file cannot be found there is a suggest to use absolute paths within compiling. Instead of using "../".

Secondly, you could try to copy gcno and gcda files to match "../../code/lib/src/lib1/a.c".

Or to fix building rules to make sure that no broken relative paths applied (like ../../)

烛影斜 2024-12-21 18:50:50

从编译代码的文件夹运行 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

Running gcov from the folder the code was compiled worked for me.

At the top of the .gcov file it states the complete file path. Ex.:

         -:    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)

If it is in a different folder, i.e, /path/tmp.c, do:

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文