飞道的博客

使用LLVM进行代码覆盖率检查

722人阅读  评论(0)

Code Coverage是软件测试领域的话题,具有大概率Code Coverage的源程序相比于小概率Code Coverage的源程序更容易在测试集的测试下发现BUG,LLVM提供了一个工具LLVM-COV,简单记录一下使用方法:

step 1:安装clang 和 llvm       

sudo apt install clang llvm

Step 2:编写测试程序:  


  
  1. // coverage.c
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int main(int argc, char **argv)
  5. {
  6. int loop = atoi(argv[ 1]);
  7. for( int idx = 0; idx < loop; idx++)
  8. {
  9. printf( "%s line %d, %d\n", __func__, __LINE__, idx);
  10. }
  11. return 0;
  12. }

Step3:编写Makefile


  
  1. all:
  2. 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数据信息


  
  1. all:
  2. clang -o loop-cov -fprofile- instr-generate -fcoverage-mapping coverage.c
  3. data:
  4. llvm-profdata merge -o loop-cov.profdata default.profraw
  5. 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场