Code Coverage是软件测试领域的话题,具有大概率Code Coverage的源程序相比于小概率Code Coverage的源程序更容易在测试集的测试下发现BUG,LLVM提供了一个工具LLVM-COV,简单记录一下使用方法:
step 1:安装clang 和 llvm
sudo apt install clang llvm
Step 2:编写测试程序:
-
// coverage.c
-
#include <stdio.h>
-
#include <stdlib.h>
-
-
int main(int argc, char **argv)
-
{
-
int loop = atoi(argv[
1]);
-
-
for(
int idx =
0; idx < loop; idx++)
-
{
-
printf(
"%s line %d, %d\n", __func__, __LINE__, idx);
-
}
-
-
return
0;
-
}
Step3:编写Makefile
-
all:
-
clang -o
loop-cov -fprofile-
instr-generate -fcoverage-mapping coverage.c
选项-fprofile-instr-generate -fcoverage-mapping是为了对源码进行插桩编译,这样执行程序后,才会产生Code Coverage文件
Step4:执行程序,产生Code Coverage文件
产生了default.profraw文件
Step5:生成Code Coverage数据信息
-
all:
-
clang -o
loop-cov -fprofile-
instr-generate -fcoverage-mapping coverage.c
-
data:
-
llvm-profdata merge -o
loop-cov.profdata
default.profraw
-
llvm-cov show ./
loop-cov -
instr-profile=
loop-cov.profdata
loop-cov.profdata
执行 make data
得到了每条指令的执行次数信息,llvm-cov对原始代码进行进行插桩操作,在运行时获取程序每条代码的执行次数信息。
结束!
转载:https://blog.csdn.net/tugouxp/article/details/113814431
查看评论