Ubuntu:gcov以及arm-linux交叉编译

一、环境

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。

你可能感兴趣的:(Ubuntu:gcov以及arm-linux交叉编译)