2012-12-19 84 views
5

我想在Linux(Ubuntu)上使用gcov来查看每行源代码的执行频率。gcov没有显示任何覆盖率数据

我加入以下标志我的gcc编译器和连接器选项,

CCFLAGS = -fprofile-arcs -ftest-coverage 
LDFLAGS = -fprofile-arcs -lgcov 

但在编译和运行该程序后,我看到创建任何* .gcda文件。其结果是,当我运行

gcov --object-directory <path to the *.gcno/*.gcda files> myfile.cpp 

显示错误:

myfile.gcda:cannot open data file, assuming not executed 
File '../../../../../code/myfile.cpp' 
Lines executed:0.00% of 2625 

我失去了一些东西。如何解决这个问题?

+0

的可用列表中没有程序运行成功完成是ATLEAST? –

+0

另外,当你运行'strings compiled_prog | grep gcda'? –

+0

@Shawn - 它不返回的服务/守护进程。所以基本上我必须CTRL-C终端中的可执行文件来阻止它。这会影响gcov的行为吗?我知道gprof不会为不退出()的进程生成分析数据。 gcov是否也有这个限制。 – goldenmean

回答

0

确保gcov的和GCC是同一版本:),这其中的许多人都无法检查。

$gcc --version 
gcc (GCC) 4.1.1 
Copyright (C) 2006 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

$ find /usr/lib/gcc -name libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/32/libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/32/libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/libgcov.a 

所以你已载入gcc版本应该在libgcov.a

相关问题