gcc参数-fprofile-arcs-ftest-coverage作⽤
是⼀个可⽤于C/C++的代码覆盖⼯具,是 的内建⼯具。下⾯介绍⼀下如何利⽤ 来收集代码覆盖信息。
想要⽤ 收集代码覆盖信息,需要在 编译代码的时候加上这2个选项 “-fprofile-arcs -ftest-coverage”,把这个简单的程序编译⼀下
gcc -fprofile-arcs -ftest-coverage hello.c -o hello
编译后会得到⼀个可执⾏⽂件hello和⽂件,当⽤gcc编译⽂件的时候,如果带有“-ftest-coverage”参数,就会⽣成这
个.gcno⽂件,它包含了程序块和⾏号等信息
接下来可以运⾏这个hello的程序
./hello 5机械设计制造
./hello 12
运⾏结束以后会⽣成⼀个da⽂件,如果⼀个可执⾏⽂件带有“-fprofile-arcs”参数编译出来,并且
运⾏过⾄少⼀次,就会⽣成。这个⽂件包含了程序基本块跳转的信息。接下来可以⽤gcov⽣成代码覆盖信息:
gcov hello.c
包子的英文单词运⾏结束以后会⽣成2个⽂件v和v。打开看⾥⾯的信息:
-: 0:Source:myfunc.c
-: 0:
-: 0:da
-: 0:Runs:1
-: 0:Programs:1羊绒衫会缩水吗
-: 1:#include
魏五笔怎么打
-: 2:
新校服-: 3:void test(int count)
1: 4:{
-: 5: int i;
10: 6: for (i = 1; i < count; i++)
-: 7: {
9: 8: if (i % 3 == 0)
3: 9: printf (“%d is divisible by 3 /n”, i);
9: 10: if (i % 11 == 0)
>: 11: printf (“%d is divisible by 11 /n”, i);真人牲交视频9: 12: if (i % 13 == 0)
>: 13: printf (“%d is divisible by 13 /n”, i);-: 14: }
1: 15:}
有颜色的成语
被标记为>的代码⾏就是没有被执⾏过的,代码覆盖的信息是正确的,但是让⼈去读这些⽂字,实在是⼀个杯具。不⽤担⼼,有另外⼀个⼯具叫 ,可以⽤程序解析这些晦涩的字符,最终输出成html格式的报告,很好吧!lcov -d . -t ‘Hello test’ -o ‘hello_test.info’ -b . -c
2000年奥运会指定lcov在当前⽬录“.”去找代码覆盖的信息,输出为’hello_test.info’ ,这个hello_test.info是⼀个中间结果,需要把它⽤genhtml 来处理⼀下,genhtml是lcov⾥⾯的⼀个⼯具。
genhtml -o result hello_test.info
指定输出⽬录是 result。⼀个完整的html报告就⽣成了,做⼀个连接,把这个⽬录连到随便⼀个web rver的⽬录下,就可以看报告了。