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