使用gcov对gcc项目进行覆盖分析

在gcc项目中,编译参数加上-fprofile-arcs -ftest-coverage,连接参数加上-lgcov

编译以后除了产生.o文件以外,还生成*.gcno文件,

先执行编译的结果文件,会生成*.gcda文件(可以反复执行多次,都会累加到对应的gcda文件中)

执行gcov myfile.cpp(myfile.cpp是某个源码文件)

提示:

File‘src/ceftool.cpp’
已执行的行数:54.55% (共 22 行)
src/ceftool.cpp:正在创建‘ceftool.cpp.gcov’

File‘/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iostream’
已执行的行数:100.00% (共 1 行)
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iostream:正在创建‘iostream.gcov’

File‘/home/liubin/abwork/repository/leadtone/pmapi_mig_v2.0/2.5-r2559/include/pmapi2.5/pmscl/PmComSmartPtr.h’
已执行的行数:0.00% (共 6 行)
/home/liubin/abwork/repository/leadtone/pmapi_mig_v2.0/2.5-r2559/include/pmapi2.5/pmscl/PmComSmartPtr.h:正在创建‘PmComSmartPtr.h.gcov’

 

在当前目录生成*.gcov文件,直接打开gcov文件可以查看结果,如下:

/home/liubin/svn/cefsdk/project/unix/ceftool>vi ceftool.cpp.gcov

  1         -:    0:Source:src/ceftool.cpp
  2         -:    0:Graph:ceftool.gcno
  3         -:    0:Data:ceftool.gcda
  4         -:    0:Runs:1
  5         -:    0:Programs:1
  6         -:    1:#include "ceftool.h"
  7         -:    2:Cef* g_pCef=PM_NULL;
  8     #####:    3:void check_cef_home()
  9         -:    4:{
 10     #####:    5:    if( pm_getenv( "MIG_HOME" ) == PM_NULL ||
 11         -:    6:        pm_getenv( "MIG_HOME" )[0] == '/0' )
 12         -:    7:    {
 13     #####:    8:        fprintf( stderr, "Can not find env MIG_HOME, please install cef first!/n");
 14     #####:    9:        exit(-1);
 15         -:   10:    }
 16     #####:   11:}
 17         -:   12:
 18     #####:   13:static int show_version()
 19         -:   14:{
 20     #####:   15:    printf("ceftool ver %s, build on %s %s/n", CEFTOOL_VERSION, __DATE__, __TIME__ );
 21     #####:   16:    return 0;
 22         -:   17:}
 23         1:   18:static int show_help()
 24         -:   19:{
 25         1:   20:    printf("ceftool ver %s, build on %s %s/n", CEFTOOL_VERSION, __DATE__, __TIME__ );
 26         1:   21:    return 0;

 

 

其中"-"是表示无意义的行,####表示应该执行,但是没有执行的代码,旁边有数字的,表示执行了多少次

你可能感兴趣的:(使用gcov对gcc项目进行覆盖分析)