【技术实现步骤摘要】
本专利技术涉及一种仿真(Simulation)系统及方法,尤其涉及一种。
技术介绍
代码覆盖率(Code Coverage)是用以衡量应用程序代码的执行效率的一个重要指标,因此,对于代码覆盖率的衡量与计算也是一种重要的软件技术。目前,比较流行的代码覆盖率的计算技术,是在用户程序编译时,在应用程序中插入特殊的代码或指令,称为桩点,并根据插入的位置等信息构建数据库,当程序运行到桩点时,特殊指令被执行,产生特定的动作,如进入异常(exception)处理程序,或向特定地址写入特定的数据等,动作目的是通知相应的分析模块,告知该桩点已被执行,分析模块根据之前建好的数据库信息,以及所经过的桩点信息,分析统计出代码的执行覆盖率等。打桩技术一般应用于c,c++代码,通常需要编译器(compiler)配合,编译时打入桩点,或者在进行编译之前,需要特殊的预处理模块对源文件进行特别的预处理(比如在源文件中程序分支或语句,函数之后插入特殊的代码),再通过编译器生成目标代码。然而,这种方式的主要缺点为1、需要编译器进行调整修改,或提供专门的原文件预处理模块。2、由于是在文件中插入代码或 ...
【技术保护点】
一种用以获得应用程序代码执行率的仿真装置,其特征在于,包括:系统模拟模块,用于实现对CPU及各功能模块的模拟,根据所述应用程序代码的运行情况,提供执行代码指令的参数信息;调试信息获取模块,用于获取编译器在编译操作后产生的调试 信息,提供所述应用程序的每一行代码与程序指针的对应关系;代码统计模块,用于根据系统模拟模块提供的执行代码指令的参数信息,与调试信息获取模块提供的应用程序的每一行代码与程序指针的对应关系,对应用程序代码的执行率进行计算。
【技术特征摘要】
1.一种用以获得应用程序代码执行率的仿真装置,其特征在于,包括系统模拟模块,用于实现对CPU及各功能模块的模拟,根据所述应用程序代码的运行情况,提供执行代码指令的参数信息;调试信息获取模块,用于获取编译器在编译操作后产生的调试信息,提供所述应用程序的每一行代码与程序指针的对应关系;代码统计模块,用于根据系统模拟模块提供的执行代码指令的参数信息,与调试信息获取模块提供的应用程序的每一行代码与程序指针的对应关系,对应用程序代码的执行率进行计算。2.如权利要求1所述的装置,其特征在于,进一步包括外设功能模拟模块,与所述系统模拟模块相连,用于实现对受控于系统模拟模块的外设功能的模拟。3.如权利要求1所述的装置,其特征在于所述系统模拟模块,提供的执行代码指令参数信息包括程序指针序列信息;所述代码统计模块,包括代码覆盖率模块,用于根据系统模拟模块提供的程序指针序列信息,与调试信息获取模块提供的应用程序的每一行代码与程序指针的对应关系,分析所述应用程序的每一行代码是否被执行过,从而计算出所述应用程序的代码覆盖率。4.如权利要求3所述的装置,其特征在于,所述代码覆盖率模块,进一步根据系统模拟模块提供的程序指针序列信息,与调试信息获取模块提供的应用程序的每一行代码与程序指针的对应关系,分析出所述应用程序的每一行代码被执行的次数。5.如权利要求3所述的装置,其特征在于所述调试信息获取模块,进一步提供应用程序执行中函数的起始地址与结束地址给所述代码覆盖率模块;所述代码覆盖率模块,进一步根据系统模拟模块提供的程序指针序列信息、调试信息获取模块提供的应用程序的每一行代码与程序指针的对应关系,以及调试信息获取模块提供的函数起始地址与结束地址,确定函数在应用程序代码中对应的行信息,进而计算出函数的执行覆盖率。6.如权利要求1所述的装置,其特征在于所述系统模拟模块,提供的执行代码指令参数信息包括每条指令消耗的CPU时钟周期信息;所述代码统计模块,包括代码执行效率模块,用于根据系统模拟模块提供的CPU时钟周期信息,与调试信息获取模块提供的所述应用程序的每一行代码与程序指针的对应关系,计算出每一行代码消耗的CPU时钟周期。7.如权利要求6所述的装置,其特征在于,所述的代码执行效率模块,进一步根据系统模拟模块提供的CPU时钟周期信息,与调试信息获取模块提供的所述应用程序的每一行代码与程序指针的对应关系,分析其中的函数调用指令,计算出函数执行效率。8.一种利用仿真装置获得应用程序代码执行率的方法,其特征在于,包括如下步骤(1)利用仿真装置模拟应用程序运...
【专利技术属性】
技术研发人员:刘凯,杨有成,
申请(专利权)人:凌阳科技股份有限公司,北京北阳电子技术有限公司,
类型:发明
国别省市:71[中国|台湾]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。