$ gcc -c fib.c -ftest-coverage -fprofile-arcs
链接的时候下面三条任选一个执行即可
$ gcc fib.o -o fib --coverage $ gcc fib.o -o fib -lgcov $ gcc fib.o -o fib -fprofile-arcs运行程序 fib
$ ./fib会生成 .gcda 文件,.gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。
生成 gcov 报告
$ gcov fib.c
LCOV 整理覆盖率数据
1. 汇总覆盖率数据,使用已经生成的 .gcno .gcda 文件生成覆盖率数据
$ lcov -c -o fib.info -d .
简单解释一下三个选项
-c: lcov 的一个操作,表示要去捕获覆盖率数据
-o: 输出文件
-d: .gcno .gcda 所在的文件夹,注意这里有个“.”,是从当前文件夹中获取数据的
问题又来了,开始在 lcov 的过程中,碰到 Negative length 的问题,顺着提示找到 lcov 源码中的一处 $(length) ,之后并没有头绪为什么会是负值传入的,于是根据 sourceforge 上面的地址,发了一封邮件询问了一下,回信意思是我使用的 gcc 版本为 4.7.2,需要 lcov 1.10+ 版本支持,使用 1.09 或更低版本的 lcov 会出现这样的问题。于是到以下地址去下载了最新的 lcov
http://ltp.sourceforge.net/coverage/lcov.php
在 lcov 1.10 的 release notes 中写明了对 gcc 4.7+ 提供了支持。
2. 生成 html 格式的报告
$ genhtml fib.info -o fib_result
genhtml 是安装 lcov 时附带的,使用上面产生的 .info 文件生成报告,存放于 fib_result 文件夹中
没错,这里的报告并不只是一个文件,有好多存放在你 -o 指定的目录下,生成之后进入 fib_result 就可以看见念想很久的 index.html 了
这里再分享一下怎么从 terminal 用浏览器打开网页:
$ firefox index.html