美文网首页
Ubuntu:gcov以及arm-linux交叉编译

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

作者: 亚比伦哥 | 来源:发表于2018-06-11 15:00 被阅读0次

    一、环境

    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交叉编译

          本文链接:https://www.haomeiwen.com/subject/vrcheftx.html