在CentOS上使用gcc进行代码覆盖率测试,通常需要借助gcov工具。以下是详细的步骤:
首先,确保你的系统已经安装了gcc和gcov。如果没有安装,可以使用以下命令进行安装:
sudo yum install gcc gcov
编译你的C或C++代码时,需要添加一些特定的编译选项来启用代码覆盖率测试。假设你的源文件是main.c,你可以使用以下命令进行编译:
gcc -fprofile-arcs -ftest-coverage -o main main.c
对于C++代码,使用g++:
g++ -fprofile-arcs -ftest-coverage -o main main.cpp
运行编译后的程序,这将生成覆盖率数据文件(.gcda和.gcno)。
./main
运行完程序后,使用gcov工具生成覆盖率报告。假设你的源文件是main.c,可以使用以下命令:
gcov main.c
这将生成一个名为main.gcov的文件,其中包含详细的覆盖率信息。
打开生成的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;
}
按照上述步骤进行操作:
编译代码:
gcc -fprofile-arcs -ftest-coverage -o main main.c
运行程序:
./main
生成覆盖率报告:
gcov main.c
查看覆盖率报告:
打开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 |
-: