0

Gcov 是基于应用程序的覆盖还是基于系统的覆盖

不会为所有文件生成 .gcda 文件。gcda 文件仅为少数源文件创建。为所有符合 gcov 编译标志的源文件创建 gcno 文件。我的项目还有基于 QT 的模块,我没有获得 .gcda 文件。

这里的问题是:gcov 是基于应用程序的覆盖工具还是基于系统的覆盖工具?

我在 CFLAGS LDFLAGS 和 CXXFLAGS 中添加了 -fprofile-arcs -ftest-coverage。

4

2 回答 2

0

编译您的代码-fprofile-arcs -ftest-coverage将生成 .gcno 文件。

执行您的二进制文件后,将生成 .gcda。因此,在您的情况下,某些二进制文件将不会被执行。如果 .gcno 文件是 wrt 文件,那么它肯定会在执行二进制文件后生成 .gcda。

于 2013-07-24T14:12:36.627 回答
0

要回答您的问题,您需要了解 gcov 的工作原理。只需阅读此内容(基本上有四个步骤):

GCC 的代码覆盖选项如何工作?

更进一步总结,基本上 gcc 将编译和“检测”函数,因此函数的每次执行都会增加或更新一些计数器。这样就可以在程序结束时得到函数统计。

回答你的问题:你刚刚用 gcov 编译了一些 C 程序,但没有用 gcov 编译 Qt,而只是作为 Qt library 链接到它,所以肯定不会有 gcov 相关的统计信息。

因此,它不是基于应用程序或系统生成的统计信息,而是取决于在编译期间启用了 gcov 的 C 文件。

于 2015-12-17T09:07:33.067 回答