一、环境
1、Ubuntu:ubuntu-16.04.2-desktop-amd64.iso
2、用apt命令使系统更新到最新
3、lcov-1.13.tar解压并安装
二、开始使用
1、编译目标程序:gcc -fprofile-arcs -ftest-coverage -g -O0 -o test test.c
生成.gcno文件(gcov note文件),如果交叉编译可替换相应的编译器,如arm-none-linux-gnueabi-gcc
2、运行程序./test,此时会生成gcda(gcov data文件),默认会在test的编译路径生成.gcda;
注意:程序执行完后,覆盖率才会生成,如果程序为常驻内存,那么强制退出无法生成报告,这时就需要使用gcov_out.so;
1、编译gcov_out.c文件(网上可下载此文件),arm-none-linux-gnueabi-gcc -shared -fPIC gcov_out.c -o gcov_out.so,生成gcov_out.so
2、把编译好的可执行程序和so文件都拷贝到目标板上,如用scp命令;
在目标板上执行gcov_out.so ./test,启动程序;
执行用例后,退出程序,然后进入相关的路径(默认是编译时的路径)查看生成的gcda文件;
把生成的gcda文件全部拷贝到ubuntu的相关的路径下;
3、运行lcov -gcov-tool /opt/arm2009gcc/bin/arm-none-linux-gnueabi-gcov --capture --directory . --output-file 1.info --test-name test
生成1.info文件;
4、运行genhtml 1.info --output-directory output --title "Basic Coverage" --show-details –legend
生成output文件;
5、进入output文件双击打开index查看覆盖率结果。
大概就这么多,有些细节记不清了,而且gcov、lcov、genhtml有很多命令,不同的命令生成的结果不同,还需仔细看man。
网友评论