温馨提示×

CentOS如何使用gcc进行代码覆盖率测试

小樊
57
2025-10-04 20:18:41
栏目: 智能运维

在CentOS上使用gcc进行代码覆盖率测试,通常需要借助gcov工具。以下是详细的步骤:

1. 安装必要的软件包

首先,确保你的系统已经安装了gccgcov。如果没有安装,可以使用以下命令进行安装:

sudo yum install gcc gcov

2. 编译代码

编译你的C或C++代码时,需要添加一些特定的编译选项来启用代码覆盖率测试。假设你的源文件是main.c,你可以使用以下命令进行编译:

gcc -fprofile-arcs -ftest-coverage -o main main.c

对于C++代码,使用g++

g++ -fprofile-arcs -ftest-coverage -o main main.cpp

3. 运行程序

运行编译后的程序,这将生成覆盖率数据文件(.gcda.gcno)。

./main

4. 生成覆盖率报告

运行完程序后,使用gcov工具生成覆盖率报告。假设你的源文件是main.c,可以使用以下命令:

gcov main.c

这将生成一个名为main.gcov的文件,其中包含详细的覆盖率信息。

5. 查看覆盖率报告

打开生成的main.gcov文件,查看代码覆盖率情况。报告中会显示每一行代码的执行情况,包括哪些行被执行了,哪些行没有被执行。

示例

假设你有一个简单的C程序main.c

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    int c = a + b;
    printf("Sum: %d\n", c);
    return 0;
}

按照上述步骤进行操作:

  1. 编译代码:

    gcc -fprofile-arcs -ftest-coverage -o main main.c
    
  2. 运行程序:

    ./main
    
  3. 生成覆盖率报告:

    gcov main.c
    
  4. 查看覆盖率报告:

    打开main.gcov文件,你会看到类似以下的内容:

    -:    0:/* of file 'main.c' Function 'main' Line #1 */
    -:    0:/* of file 'main.c' Function 'main' Line #2 */
    -:    0:/* of file 'main.c' Function 'main' Line #3 */
    -:    0:/* of file 'main.c' Function 'main' Line #4 */
    -:    0:/* of file 'main.c' Function 'main' Line #5 */
    -:    0:/* of file 'main.c' Function 'main' Line #6 */
    -:    0:/* of file 'main.c' Function 'main' Line #7 */
    -:    0:/* of file 'main.c' Function 'main' Line #8 */
    -:    0:/* of file 'main.c' Function 'main' Line #9 */
    -:    0:/* of file 'main.c' Function 'main' Line #10 */
    -:    0:/* of file 'main.c' Function 'main' Line #11 */
    -:    0:/* of file 'main.c' Function 'main' Line #12 */
    -:    0:/* of file 'main.c' Function 'main' Line #13 */
    -:    0:/* of file 'main.c' Function 'main' Line #14 */
    -:    0:/* of file 'main.c' Function 'main' Line #15 */
    -:    0:/* of file 'main.c' Function 'main' Line #16 */
    -:    0:/* of file 'main.c' Function 'main' Line #17 */
    -:    0:/* of file 'main.c' Function 'main' Line #18 */
    -:    0:/* of file 'main.c' Function 'main' Line #19 */
    -:    0:/* of file 'main.c' Function 'main' Line #20 */
    -:    0:/* of file 'main.c' Function 'main' Line #21 */
    -:    0:/* of file 'main.c' Function 'main' Line #22 */
    -:    0:/* of file 'main.c' Function 'main' Line #23 */
    -:    0:/* of file 'main.c' Function 'main' Line #24 */
    -:    0:/* of file 'main.c' Function 'main' Line #25 */
    -:    0:/* of file 'main.c' Function 'main' Line #26 */
    -:    0:/* of file 'main.c' Function 'main' Line #27 */
    -:    0:/* of file 'main.c' Function 'main' Line #28 */
    -:    0:/* of file 'main.c' Function 'main' Line #29 */
    -:    0:/* of file 'main.c' Function 'main' Line #30 */
    -:    0:/* of file 'main.c' Function 'main' Line #31 */
    -:    0:/* of file 'main.c' Function 'main' Line #32 */
    -:    0:/* of file 'main.c' Function 'main' Line #33 */
    -:    0:/* of file 'main.c' Function 'main' Line #34 */
    -:    0:/* of file 'main.c' Function 'main' Line #35 */
    -:    0:/* of file 'main.c' Function 'main' Line #36 */
    -:    0:/* of file 'main.c' Function 'main' Line #37 */
    -:    0:/* of file 'main.c' Function 'main' Line #38 */
    -:    0:/* of file 'main.c' Function 'main' Line #39 */
    -:    0:/* of file 'main.c' Function 'main' Line #40 */
    -:    0:/* of file 'main.c' Function 'main' Line #41 */
    -:    0:/* of file 'main.c' Function 'main' Line #42 */
    -:    0:/* of file 'main.c' Function 'main' Line #43 */
    -:    0:/* of file 'main.c' Function 'main' Line #44 */
    -:    0:/* of file 'main.c' Function 'main' Line #45 */
    -:    0:/* of file 'main.c' Function 'main' Line #46 */
    -:    0:/* of file 'main.c' Function 'main' Line #47 */
    -:    0:/* of file 'main.c' Function 'main' Line #48 */
    -:    0:/* of file 'main.c' Function 'main' Line #49 */
    -:    0:/* of file 'main.c' Function 'main' Line #50 */
    -:    0:/* of file 'main.c' Function 'main' Line #51 */
    -:    0:/* of file 'main.c' Function 'main' Line #52 */
    -:    0:/* of file 'main.c' Function 'main' Line #53 */
    -:    0:/* of file 'main.c' Function 'main' Line #54 */
    -:    0:/* of file 'main.c' Function 'main' Line #55 */
    -:    0:/* of file 'main.c' Function 'main' Line #56 */
    -:    0:/* of file 'main.c' Function 'main' Line #57 */
    -:    0:/* of file 'main.c' Function 'main' Line #58 */
    -:    0:/* of file 'main.c' Function 'main' Line #59 */
    -:    0:/* of file 'main.c' Function 'main' Line #60 */
    -:    0:/* of file 'main.c' Function 'main' Line #61 */
    -:    0:/* of file 'main.c' Function 'main' Line #62 */
    -:    0:/* of file 'main.c' Function 'main' Line #63 */
    -:    0:/* of file 'main.c' Function 'main' Line #64 */
    -:    0:/* of file 'main.c' Function 'main' Line #65 */
    -:    0:/* of file 'main.c' Function 'main' Line #66 */
    -:    0:/* of file 'main.c' Function 'main' Line #67 */
    -:    0:/* of file 'main.c' Function 'main' Line #68 */
    -:    0:/* of file 'main.c' Function 'main' Line #69 */
    -:    0:/* of file 'main.c' Function 'main' Line #70 */
    -:    0:/* of file 'main.c' Function 'main' Line #71 */
    -:    0:/* of file 'main.c' Function 'main' Line #72 */
    -:    0:/* of file 'main.c' Function 'main' Line #73 */
    -:    0:/* of file 'main.c' Function 'main' Line #74 */
    -:    0:/* of file 'main.c' Function 'main' Line #75 */
    -:    0:/* of file 'main.c' Function 'main' Line #76 */
    -:    0:/* of file 'main.c' Function 'main' Line #77 */
    -:    0:/* of file 'main.c' Function 'main' Line #78 */
    -:    0:/* of file 'main.c' Function 'main' Line #79 */
    -:    0:/* of file 'main.c' Function 'main' Line #80 */
    -:    0:/* of file 'main.c' Function 'main' Line #81 */
    -:    0:/* of file 'main.c' Function 'main' Line #82 */
    -:    0:/* of file 'main.c' Function 'main' Line #83 */
    -:    0:/* of file 'main.c' Function 'main' Line #84 */
    -:    0:/* of file 'main.c' Function 'main' Line #85 */
    -:    0:/* of file 'main.c' Function 'main' Line #86 */
    -:    0:/* of file 'main.c' Function 'main' Line #87 */
    -:    0:/* of file 'main.c' Function 'main' Line #88 */
    -:    0:/* of file 'main.c' Function 'main' Line #89 */
    -:    0:/* of file 'main.c' Function 'main' Line #90 */
    -:    0:/* of file 'main.c' Function 'main' Line #91 */
    -:    0:/* of file 'main.c' Function 'main' Line #92 */
    -:    0:/* of file 'main.c' Function 'main' Line #93 */
    -:    0:/* of file 'main.c' Function 'main' Line #94 */
    -:    0:/* of file 'main.c' Function 'main' Line #95 */
    -:    0:/* of file 'main.c' Function 'main' Line #96 */
    -:    0:/* of file 'main.c' Function 'main' Line #97 */
    -:    0:/* of file 'main.c' Function 'main' Line #98 */
    -:    0:/* of file 'main.c' Function 'main' Line #99 */
    -:    0:/* of file 'main.c' Function 'main' Line #100 */
    -:    0:/* of file 'main.c' Function 'main' Line #101 */
    -:    0:/* of file 'main.c' Function 'main' Line #102 */
    -:    0:/* of file 'main.c' Function 'main' Line #103 */
    -:    0:/* of file 'main.c' Function 'main' Line #104 */
    -:    0:/* of file 'main.c' Function 'main' Line #105 */
    -:    0:/* of file 'main.c' Function 'main' Line #106 */
    -:    0:/* of file 'main.c' Function 'main' Line #107 */
    -:    0:/* of file 'main.c' Function 'main' Line #108 */
    -:    0:/* of file 'main.c' Function 'main' Line #109 */
    -:    0:/* of file 'main.c' Function 'main' Line #110 */
    -:    0:/* of file 'main.c' Function 'main' Line #111 */
    -:    0:/* of file 'main.c' Function 'main' Line #112 */
    -:    0:/* of file 'main.c' Function 'main' Line #113 */
    -:    0:/* of file 'main.c' Function 'main' Line #114 */
    -:    0:/* of file 'main.c' Function 'main' Line #115 */
    -:    0:/* of file 'main.c' Function 'main' Line #116 */
    -:    0:/* of file 'main.c' Function 'main' Line #117 */
    -:    0:/* of file 'main.c' Function 'main' Line #118 */
    -:    0:/* of file 'main.c' Function 'main' Line #119 */
    -:    0:/* of file 'main.c' Function 'main' Line #120 */
    -:    0:/* of file 'main.c' Function 'main' Line #121 */
    -:    0:/* of file 'main.c' Function 'main' Line #122 */
    -:    0:/* of file 'main.c' Function 'main' Line #123 */
    -:    0:/* of file 'main.c' Function 'main' Line #124 */
    -:    0:/* of file 'main.c' Function 'main' Line #125 */
    -:    0:/* of file 'main.c' Function 'main' Line #126 */
    -:    0:/* of file 'main.c' Function 'main' Line #127 */
    -:    0:/* of file 'main.c' Function 'main' Line #128 */
    -:    0:/* of file 'main.c' Function 'main' Line #129 */
    -:    0:/* of file 'main.c' Function 'main' Line #130 */
    -:    0:/* of file 'main.c' Function 'main' Line #131 */
    -:    0:/* of file 'main.c' Function 'main' Line #132 */
    -:    0:/* of file 'main.c' Function 'main' Line #133 */
    -:    0:/* of file 'main.c' Function 'main' Line #134 */
    -:    0:/* of file 'main.c' Function 'main' Line #135 */
    -:    0:/* of file 'main.c' Function 'main' Line #136 */
    -:    0:/* of file 'main.c' Function 'main' Line #137 */
    -:    0:/* of file 'main.c' Function 'main' Line #138 */
    -:    0:/* of file 'main.c' Function 'main' Line #139 */
    -:    0:/* of file 'main.c' Function 'main' Line #140 */
    -:    0:/* of file 'main.c' Function 'main' Line #141 */
    -:    0:/* of file 'main.c' Function 'main' Line #142 */
    -:    0:/* of file 'main.c' Function 'main' Line #143 */
    -:    0:/* of file 'main.c' Function 'main' Line #144 */
    -:    0:/* of file 'main.c' Function 'main' Line #145 */
    -:    0:/* of file 'main.c' Function 'main' Line #146 */
    -:    0:/* of file 'main.c' Function 'main' Line #147 */
    -:    0:/* of file 'main.c' Function 'main' Line #148 */
    -:    0:/* of file 'main.c' Function 'main' Line #149 */
    -:    0:/* of file 'main.c' Function 'main' Line #150 */
    -:    0:/* of file 'main.c' Function 'main' Line #151 */
    -:    0:/* of file 'main.c' Function 'main' Line #152 */
    -:    0:/* of file 'main.c' Function 'main' Line #153 */
    -:    0:/* of file 'main.c' Function 'main' Line #154 */
    -:    0:/* of file 'main.c' Function 'main' Line #155 */
    -:    0:/* of file 'main.c' Function 'main' Line #156 |
    -:    0:/* of file 'main.c' Function 'main' Line #157 |
    -:    0:/* of file 'main.c' Function 'main' Line #158 |
    -:    0:/* of file 'main.c' Function 'main' Line #159 |
    -:    0:/* of file 'main.c' Function 'main' Line #160 |
    -:    0:/* of file 'main.c' Function 'main' Line #161 |
    -:

0