[发明专利]一种驱动程序的代码覆盖率测量方法及装置有效
| 申请号: | 201510093730.5 | 申请日: | 2015-03-02 |
| 公开(公告)号: | CN104699605B | 公开(公告)日: | 2017-11-17 |
| 发明(设计)人: | 胡事民;白家驹;刘虎球 | 申请(专利权)人: | 清华大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京路浩知识产权代理有限公司11002 | 代理人: | 李相雨 |
| 地址: | 100084 北京市海*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 驱动程序 代码 覆盖率 测量方法 装置 | ||
1.一种驱动程序的代码覆盖率测量方法,其特征在于,所述方法包括:
S1:修改待测试驱动程序的Makefile文件,对待测试驱动程序的源代码进行编译,以获得中间代码,对所述中间代码中的各基本块添加标号,记录各基本块的指令数目,并对所述中间代码中的各基本块插装传递函数,对所述中间代码进行扫描,以获得所述待测试驱动程序的指令总数;
S2:对插装传递函数后的中间代码进行编译,生成可加载的目标文件;
S3:对所述目标文件进行加载,以运行所述待测试驱动程序;通过所述传递函数获取当前运行的基本块的标号,将所述获取的标号存储至内存缓冲区;当所述内存缓冲区存满时,将所述内存缓冲区中的标号记录到日志文件中;
S4:根据所述日志文件中基本块的标号以及对应基本块的指令数目计算所述待测试驱动程序中运行过的指令总数,基于所述待测试驱动程序中运行过的指令总数以及所述待测试驱动程序的指令总数计算确定所述待测试驱动程序的代码覆盖率。
2.如权利要求1所述的方法,其特征在于,步骤S2具体包括:
S201:对所述插装传递函数后的中间代码进行编译,以生成汇编文件;
S202:对所述汇编文件进行编译,以生成可加载的目标文件。
3.如权利要求2所述的方法,其特征在于,步骤S4具体包括:
S401:去除所述日志文件中重复的标号;
S402:根据所述日志文件中剩余的标号以及对应基本块的指令数目计算所述待测试驱动程序中运行过的指令总数;
S403:基于所述待测试驱动程序中运行过的指令总数以及所述待测试驱动程序的指令总数计算所述待测试驱动程序的代码覆盖率。
4.一种驱动程序的代码覆盖率测量装置,其特征在于,所述装置包括:
标识器,用于对待测试驱动程序的源代码进行编译,以获得中间代码,对所述中间代码中的各基本块添加标号,对所述中间代码中的各基本块按顺序添加标号,记录各基本块的指令数目,并对所述中间代码中的各基本块插装传递函数,及进行扫描,以获得所述待测试驱动程序的指令总数,对插装传递函数后的中间代码进行编译,生成可加载的目标文件;
记录器,用于对所述目标文件进行加载,以运行所述待测试驱动程序,通过所述传递函数获取当前运行的基本块的标号,将所述获取的标号存储至内存缓冲区;当所述内存缓冲区存满时,将所述内存缓冲区中的标号记录到日志文件中;
分析器,用于根据所述日志文件中基本块的标号确定所述待测试驱动程序的代码覆盖率。
5.如权利要求4所述的装置,其特征在于,所述标识器进一步用于对所述插装传递函数后的中间代码进行编译,以生成汇编文件;对所述汇编文件进行编译,以生成可加载的目标文件。
6.如权利要求4所述的装置,其特征在于,所述分析器进一步用于去除所述日志文件中重复的标号;根据所述日志文件中剩余的标号以及对应基本块的指令数目计算所述待测试驱动程序中运行过的指令总数;基于所述待测试驱动程序中运行过的指令总数以及所述待测试驱动程序的指令总数计算所述待测试驱动程序的代码覆盖率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510093730.5/1.html,转载请声明来源钻瓜专利网。





