gcc 参数 -fprofile-arcs -ftest-coverage作用
来源:互联网 发布:网络推广招聘 编辑:程序博客网 时间:2024/06/06 18:05
gcov 是一个可用于C/C++的代码覆盖工具,是gcc 的内建工具。下面介绍一下如何利用gcov 来收集代码覆盖信息。
想要用gcov 收集代码覆盖信息,需要在gcc 编译代码的时候加上这2个选项 “-fprofile-arcs -ftest-coverage”,把这个简单的程序编译一下
gcc -fprofile-arcs -ftest-coverage hello.c -o hello
编译后会得到一个可执行文件hello和hello.gcno文件,当用gcc编译文件的时候,如果带有“-ftest-coverage”参数,就会生成这个.gcno文件,它包含了程序块和行号等信息
接下来可以运行这个hello的程序
./hello 5
./hello 12
运行结束以后会生成一个hello.gcda文件,如果一个可执行文件带有“-fprofile-arcs”参数编译出来,并且运行过至少一次,就会生成。这个文件包含了程序基本块跳转的信息。接下来可以用gcov生成代码覆盖信息:
gcov hello.c
运行结束以后会生成2个文件hello.c.gcov和myfunc.c.gcov。打开看里面的信息:
-: 0:Source:myfunc.c
-: 0:Graph:hello.gcno
-: 0:Data:hello.gcda
-: 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:}
被标记为#####的代码行就是没有被执行过的,代码覆盖的信息是正确的,但是让人去读这些文字,实在是一个杯具。不用担心,有另外一个工具叫lcov,可以用程序解析这些晦涩的字符,最终输出成html格式的报告,很好吧!
lcov -d . -t ‘Hello test’ -o ‘hello_test.info’ -b . -c
指定lcov在当前目录“.”去找代码覆盖的信息,输出为’hello_test.info’ ,这个hello_test.info是一个中间结果,需要把它用genhtml来处理一下,genhtml是lcov里面的一个工具。
genhtml -o result hello_test.info
指定输出目录是 result。一个完整的html报告就生成了,做一个连接,把这个目录连到随便一个web server的目录下,就可以看报告了。
- gcc 参数 -fprofile-arcs -ftest-coverage作用
- gcc 参数 -fprofile-arcs -ftest-coverage作用
- gcc 中参数-ftest-coverage -fprofile-arcs 使用
- fprofile-arcs ftest-coverage
- gcc coverage test tool: gcov
- gcc的 -Wl参数的作用
- gcc链接参数--whole-archive的作用
- gcc链接参数--whole-archive的作用
- C++ code coverage profiling with GCC/GCOV
- d3_paths&arcs
- Coverage
- gcc参数
- Gcc参数
- gcc参数
- gcc 参数
- gcc 参数
- gcc 参数
- gcc 参数
- FMDB官方使用文档 G-C-D的使用 提高性能(翻译)
- 关于intelliJ idea14.1创建servlet提示cannot resolve symbol‘servlet’的问题
- LeetCode OJ 之 Copy List with Random Pointer(复制含有随机指针的链表)
- HEVC 学习简介
- JavaScript 基础
- gcc 参数 -fprofile-arcs -ftest-coverage作用
- C++9.3.5容器大小的操作
- JFileChooser (Java Swing提供的文件选择对话框)
- 一分钟掌握Android spinner下拉框
- 非计算机专业无实习项目相关性不大怎么拿到 BAT offer?
- 数字取值,精确到小数点后n位
- iOS zbar扫描二维码
- 精通 Groovy
- 心路历程