[发明专利]一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法有效
申请号: | 201410381755.0 | 申请日: | 2014-08-05 |
公开(公告)号: | CN104156311B | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 郭向英;王小丽;刘璟炜;黄晨;胡智琦 | 申请(专利权)人: | 北京控制工程研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国航天科技专利中心11009 | 代理人: | 臧春喜 |
地址: | 100080 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法。本发明采用CPU模拟器技术,解决了不同嵌入式处理器的目标码在通用PC机上的执行问题,使得可以在通用PC机上进行嵌入式C语言目标码级的单元测试,本发明利用CPU模拟器,配合测试驱动程序的编写约定,实现了被测函数目标码覆盖率的自动记录和输出,能够统计测试用例执行的目标码语句和分支覆盖率。本与现有技术相比,本发明保证被测试的C语言目标码与真实处理器上执行的目标码一致,确保了测试结果的有效性,同时与现有的C语言单元测试工具结合可以构建自动化的嵌入式C语言目标码级单元测试解决方案。 | ||
搜索关键词: | 一种 基于 cpu 模拟器 嵌入式 语言 目标 单元测试 方法 | ||
【主权项】:
一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法,其特征在于步骤如下:(1)利用C语言单元测试工具生成被测程序的测试驱动程序;所述测试驱动程序的基本结构包括将被测函数名称赋值给一个全局变量tested_proc_name的句柄、测试用例输入句柄Input_handle、调用被测函数test_proc句柄、测试结果输出句柄Output_handle和调用退出点函数EXIT_POINT句柄;(2)调用与目标处理器对应的嵌入式C语言编译器,将测试驱动程序编译成目标处理器运行的带调试信息的目标码;(3)调用与目标处理器对应的CPU模拟器软件运行带调试信息的目标码,生成输出端口输出文件、反汇编程序和覆盖率文件;(4)利用覆盖率分析工具对CPU模拟器软件生成的输出端口输出文件、反汇编程序和覆盖率文件进行分析,获得测试结果和测试覆盖信息;所述步骤(3)中的CPU模拟器软件为一个命令行程序,包括3个参数:参数1:为输出信息的地址,为16进制,记为OUT_PORT;参数2:为目标码的全路径名,记为Target_File;参数3:为输出结果保存的路径,记为Out_Path;CPU模拟器软件的工作过程为:(a)CPU模拟器软件解析带调试信息的目标码,从带调试信息的目标码的路径Target_File中,获得EXIT_POINT函数的地址并记录在Stop_Addr变量中;获得tested_proc_name变量的地址并记录在ProcPointer变量中;(b)CPU模拟器软件逐条执行Target_File中的目标码指令;(c)在执行目标码的过程中,CPU模拟器软件监视输出信息的地址OUT_PORT,当该地址有输出时,在输出缓冲中记下输出值,当输出值为0时,将输出缓冲中记录的值输出到文件中,并清除输出缓冲;(d)在执行目标码的过程中,CPU模拟器软件监视ProcPointer存储的tested_proc_name变量的地址,当tested_proc_name变量被写入时,获得写入的值,写入的值为包含被测函数名称的字符串地址,根据字符串地址获得被测函数名称的字符串,根据被测函数名称从调试信息中获得被测函数的开始地址和结束地址,并记录在开始地址Func_Start_Addr和结束地址Func_End_Addr中,CPU模拟器软件记录开始地址Func_Start_Addr和结束地址Func_End_Addr之间的语句和分支覆盖信息;(e)在执行目标码的过程中,CPU模拟器软件监视当前运行的PC指针,当PC指针不等于Stop_Addr时,返回执行步骤(b),当PC指针等于Stop_Addr时,CPU模拟器软件停止运行,输出被测试函数的反汇编语句到文件中、输出被测试函数的覆盖率信息到文件中、输出OUT_PORT端口到文件中,三个文件保存在Out_Path目录中。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410381755.0/,转载请声明来源钻瓜专利网。