Gcov 是基于应用程序的覆盖还是基于系统的覆盖
不会为所有文件生成 .gcda 文件。gcda 文件仅为少数源文件创建。为所有符合 gcov 编译标志的源文件创建 gcno 文件。我的项目还有基于 QT 的模块,我没有获得 .gcda 文件。
这里的问题是:gcov 是基于应用程序的覆盖工具还是基于系统的覆盖工具?
我在 CFLAGS LDFLAGS 和 CXXFLAGS 中添加了 -fprofile-arcs -ftest-coverage。
Gcov 是基于应用程序的覆盖还是基于系统的覆盖
不会为所有文件生成 .gcda 文件。gcda 文件仅为少数源文件创建。为所有符合 gcov 编译标志的源文件创建 gcno 文件。我的项目还有基于 QT 的模块,我没有获得 .gcda 文件。
这里的问题是:gcov 是基于应用程序的覆盖工具还是基于系统的覆盖工具?
我在 CFLAGS LDFLAGS 和 CXXFLAGS 中添加了 -fprofile-arcs -ftest-coverage。
编译您的代码-fprofile-arcs -ftest-coverage
将生成 .gcno 文件。
执行您的二进制文件后,将生成 .gcda。因此,在您的情况下,某些二进制文件将不会被执行。如果 .gcno 文件是 wrt 文件,那么它肯定会在执行二进制文件后生成 .gcda。
要回答您的问题,您需要了解 gcov 的工作原理。只需阅读此内容(基本上有四个步骤):
更进一步总结,基本上 gcc 将编译和“检测”函数,因此函数的每次执行都会增加或更新一些计数器。这样就可以在程序结束时得到函数统计。
回答你的问题:你刚刚用 gcov 编译了一些 C 程序,但没有用 gcov 编译 Qt,而只是作为 Qt library 链接到它,所以肯定不会有 gcov 相关的统计信息。
因此,它不是基于应用程序或系统生成的统计信息,而是取决于在编译期间启用了 gcov 的 C 文件。