是否可以通过运行链接到使用.gcda
选项构建的共享库的可执行文件来生成gcov数据文件(--coverage
文件)?
基本上,我的主库包含多个编译成一个共享库的c ++文件,然后是一个名为“test”的子目录,其中包含一个链接到并测试主库的测试程序。一切都编译好,并为库源文件和测试源文件生成.gcno
文件。 .gcda
文件仅为测试源文件生成,但我确实需要它们用于编译到共享库中的实际源文件。
有什么想法吗?
其他信息:
答案 0 :(得分:26)
我终于通过gcc人员的帮助解决了这个问题。请参阅此处的主题:http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html。
事实证明.gcda文件被放在.libs目录中,因为那是共享库(.so)文件所在的位置。为了让gcov生成输出,我不得不将.gcda文件向上移动到源文件所在的位置。
此外,这是一个类似的主题,其他人遇到了一些相同的问题:can gcov deal with shared object?。