使用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;

 

 

其中"-"是表示無意義的行,####表示應該執行,但是沒有執行的代碼,旁邊有數字的,表示執行了多少次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章