Linux平台代码覆盖率测试-GCC插桩基本概念和原理分析

2014-11-24 09:02:00 · 作者: · 浏览: 1

Content


1.


2. GCC插桩原理


2.1 GCC编译插桩的过程


2.2 GCC在何处插桩


2.3 GCC如何才能在编译的同时插桩


3. 小结




1.




2. GCC插桩原理



2.1 GCC编译插桩的过程



GCC的插桩和编译过程如下图。






过程描述:


(1) 编译预处理程序对源文件进行预处理,生成预处理文件(.i文件)


(2) 编译插桩程序对.i文件进行编译,生成汇编文件(.s文件),同时完成插桩


(3) 编程序对.s文件进行汇编,生成目标文件(.o文件)


(4) 链接程序对.o文件进行连接,生成可执行文件(.out/.elf文件)




2.2 GCC在何处插桩



GCC对部分arc插桩,为什么?


2.3 GCC如何才能在编译的同时插桩



BBarc都是汇编一级的概念,那么如何才能让GCC在编译的同时插入桩代码呢?



在编译时加入"-ftest-coverage -fprofile-arcs"选项即可。



-ftest-coverage选项会让GCC为每个源文件生成同名的.gcno文件,在gcov程序中,将读取.gcno文件,重组每一个可执行程序的程序流图。




3. 小结



本文简单地叙述GCC插桩的基本概念和原理,包括编译插桩过程,插桩点及编译(插桩)选项。




Reference


费训,罗蕾. 利用GNU工具实现汇编程序覆盖测试, 计算机应用, 24, 2004.


吴康. 面向多语言混合编程的嵌入式测试软件设计与实现(硕士论文). 电子科技大学, 2007.