一种寻找软件错误的方法及系统技术方案

技术编号:2914803 阅读:320 留言:0更新日期:2012-04-11 18:40
一种寻找软件错误的方法及系统,在执行软件的出错步骤之前和之后,主机分别从运行所述软件的系统或模拟系统中获取全局变量的数值并保存;所述主机自动比较执行所述出错步骤之前和之后获取的全局变量的数值,输出数值发生变化的全局变量的标识;用户根据所述数值有变化的全局变量的标识查找对这些全局变量的处理是否存在错误。相应地,本发明专利技术提供的寻找软件错误的系统包括运行所述软件的系统或模拟系统,以及存储模块、控制模块和比较模块。采用本发明专利技术可以方便快捷地寻找到全局变量的错误。

【技术实现步骤摘要】

本专利技术涉及一种寻找软件错误的方法及系统,尤其涉及一种在嵌入式系统中寻找软件全局变量错误的方法及系统。
技术介绍
随着嵌入式CPU的日益强大,嵌入式系统也越来越复杂,当然,在复杂的系统里,软件的错误也可能很多,如果没有有力的寻找软件错误的方法,这些错误将严重的影响产品质量,影响公司的形象;本文所描述的就是一种嵌入式软件寻找软件错误的方法。嵌入式软件要运行,必须在相应CPU的编译器下编译,产生的代码包括代码段(RO)、堆栈段(Stack)和全局变量(RW和ZI)。图1示出了嵌入式软件中的内存分配方式,其中:RO表示代码段,这里放置的是执行代码,只能读不能写;Stack表示堆栈段,存储的是执行代码里中断程序调用的返回地址和局部变量;RW和ZI都表示的是全局变量,这些数据将一直占着内存,为代码执行服务。一般,软件执行的正确性除了要求RO段代码逻辑的正确性外,还要求stack,RW和ZI里的数据都是正确的,其中全局变量出错导致软件错误在所有嵌入式软件错误中占有很大的比重。现在普遍的做法就是通过增加测试和软件模拟的方法,还没有一种能够方便快捷地寻找全局变量错误的方法。
技术实现思路
本专利技术要解决的技术问题是提供一种寻找软件错误的方法及系统,可以-->方便快捷地寻找到全局变量的错误。为了解决上述问题,本专利技术寻找软件错误的方法正是根据嵌入式软件内存方式的特点在全局变量内存去查找软件错误的方法,该方法也适用于采用其他将全局变量保存在内存中的系统。本专利技术提供的寻找软件错误的方法,包括:在执行软件的出错步骤之前和之后,主机分别从运行所述软件的系统或模拟系统中获取全局变量的数值并保存;所述主机自动比较执行所述出错步骤之前和之后获取的全局变量的数值,输出数值发生变化的全局变量的标识;用户根据所述数值有变化的全局变量的标识查找对这些全局变量的处理是否存在错误。进一步地,上述方法还可具有以下特点:在执行所述软件之前,所述主机先保存所述软件编译过程中输出的全局变量所在内存的地址信息;所述主机在执行出错步骤之前和之后,分别从运行所述软件的模拟系统中获取全局变量的数值时,是获取在执行出错步骤之前和之后,全局变量所在内存区域中存储单元的地址和数值。进一步地,上述方法还可具有以下特点:在执行所述软件之前,所述主机先保存所述软件编译过程中输出的各个全局变量的地址与其标识之间的对应关系信息;所述主机自动比较执行出错步骤前后的全局变量的数值时,是比较执行出错步骤之前和之后读取的存储单元的地址和数值,查找所有地址相同但数值不同的存储单元,如查找到,再根据查找到的存储单元的地址查找到对应的全局变量的标识并输出。进一步地,上述方法还可具有以下特点:所述运行所述软件的系统或模拟系统为嵌入式系统或者为在所述主机上的嵌入式运行环境即模拟的嵌入式系统。-->进一步地,上述方法还可具有以下特点:所述出错步骤是指执行软件时发生错误的步骤,包括软件中的一条或多条指令。本专利技术提供的寻找软件错误的系统包括运行所述软件的系统或模拟系统,以及存储模块、控制模块和比较模块,其中:所述存储模块包括第一数据存储单元,用于保存在执行软件的出错步骤之前从运行所述软件的系统或模拟系统中获取的全局变量的数值;以及第二数据存储单元,用于保存在执行软件的出错步骤之后从运行所述软件的系统或模拟系统中获取的全局变量的数值;所述控制模块用于与运行所述软件的系统或模拟系统进行交互,包括执行所述软件或软件中的部分步骤,在执行软件的出错步骤之前和之后发出读取全局变量的命令以获取全局变量的数值并保存在所述第一数据存储单元或第二数据存储单元,还用于启动所述比较模块;所述比较模块用于在启动后,自动比较所述第一数据存储单元和第二数据存储单元中的全局变量的数值,并输出数值发生变化的全局变量的标识。进一步地,上述系统还可具有以下特点:所述存储模块还包括内存分配信息存储单元,用于保存所述软件编译过程中输出的全局变量在内存中的地址信息;所述第一数据存储单元和第二数据存储单元保存的是全局变量所在内存区域中存储单元的地址和数值。进一步地,上述系统还可具有以下特点:所述存储模块还包括变量地址分配信息存储单元,用于保存所述软件编译过程中输出的各个全局变量的地址与其标识之间的对应关系信息;所述比较模块自动比较执行出错步骤前后的全局变量的数值时,是比较第一数据存储单元和第二数据存储单元保存的存储单元的地址和数值,查找所有地址相同但数值不同的存储单元,如查找到,再根据查找到的存储单元的地址和所述变量地址分配信息存储单元保存的所述对应关系信息查找到所述地址对应的全局变量的标识并输出。-->进一步地,上述系统还可具有以下特点:所述运行所述软件的系统为嵌入式系统,所述存储模块、控制模块和比较模块位于与该嵌入式系统交互的主机上。进一步地,上述系统还可具有以下特点:所述控制模块和比较模块位于一主机上,所述存储模块位于所述主机上或与所述主机相连接,所述运行所述软件的模拟系统为所述主机上的嵌入式运行环境即模拟的嵌入式系统。本专利技术能自动地确定在执行出错步骤时发生变化的全局变量,从而帮助软件负责人定位全局问题模块,并安排模块负责人查找错误的原因,从而提高了软件开发的速度,缩短了产品上市的时间。附图说明图1是嵌入式软件中的内存分配的示意图。图2是本专利技术实施例系统的结构图。图3是本专利技术实施例方法的流程图。具体实施方式图2所示为本实施例系统的结构图,在PC(或其他主机)中有一模拟嵌入式系统(也可称为模拟嵌入式系统),此外还包括存储模块、控制模块和比较模块,而存储模块又包含内存分配信息存储单元、变量地址分配信息存储单元、第一数据存储单元和第二存储数据单元,所述内存分配信息存储单元、变量地址分配信息存储单元、第一数据存储单元和第二数据存储单元对应于一定的存储区域,这些存储区域可以位于相同或不同的存储器中。而存储模块也并不要求在主机中,也可以是外接的存储器等,本专利技术不做限制。其中:内存分配信息存储单元用于保存内存分配地址信息,包括嵌入式软件中各个数据段(包含全局变量)所在内存的地址信息。-->变量地址分配信息存储单元用于保存各个全局变量的地址信息,包含变量名和地址之间的对应关系信息。第一数据存储单元用于保存执行出错步骤前获取的模拟嵌入式系统里全局变量内存区域中存储单元的地址和数值;第二数据存储单元用于保存执行出错步骤后获取的模拟嵌入式系统里全局变量内存区域中存储单元的地址和数值;控制模块用于与模拟嵌入式系统进行交互以完成调试过程,包括执行要调试的软件或软件中的部分步骤,根据各个全局变量的地址信息向模拟嵌入式系统发出读取全局变量的命令以获取模拟嵌入式系统里全局变量内存区域中存储单元的地址和数值并保存在所述第一数据存储单元或第二数据存储单元,还用于启动比较模块;比较模块用于在启动后,自动比较第一数据存储单元和第二数据存储单元中的存储单元的地址和数值,查找到所有地址相同但数值不同的存储单元,然后根据查找到的存储单元的地址查找变量地址分配信息,输出执行出错步骤前后数值有变化的全局变量名。本实施例方法的流程如图3所示,包括以下步骤:首先保存编译过程中输出的内存分配地址信息和各个全局变量的地址信息,如可建立内存分配表和变量地址分配表。编译器在编译过程中自动输出内本文档来自技高网...

【技术保护点】
一种寻找软件错误的方法,包括: 在执行软件的出错步骤之前和之后,主机分别从运行所述软件的系统或模拟系统中获取全局变量的数值并保存; 所述主机自动比较执行所述出错步骤之前和之后获取的全局变量的数值,输出数值发生变化的全局变量的标识 ; 用户根据所述数值有变化的全局变量的标识查找对这些全局变量的处理是否存在错误。

【技术特征摘要】
1、一种寻找软件错误的方法,包括:在执行软件的出错步骤之前和之后,主机分别从运行所述软件的系统或模拟系统中获取全局变量的数值并保存;所述主机自动比较执行所述出错步骤之前和之后获取的全局变量的数值,输出数值发生变化的全局变量的标识;用户根据所述数值有变化的全局变量的标识查找对这些全局变量的处理是否存在错误。2、如权利要求1所述的方法,其特征在于:在执行所述软件之前,所述主机先保存所述软件编译过程中输出的全局变量所在内存的地址信息;所述主机在执行出错步骤之前和之后,分别从运行所述软件的模拟系统中获取全局变量的数值时,是获取在执行出错步骤之前和之后,全局变量所在内存区域中存储单元的地址和数值。3、如权利要求2所述的方法,其特征在于:在执行所述软件之前,所述主机先保存所述软件编译过程中输出的各个全局变量的地址与其标识之间的对应关系信息;所述主机自动比较执行出错步骤前后的全局变量的数值时,是比较执行出错步骤之前和之后读取的存储单元的地址和数值,查找所有地址相同但数值不同的存储单元,如查找到,再根据查找到的存储单元的地址查找到对应的全局变量的标识并输出。4、如权利要求1或2或3所述的方法,其特征在于:所述运行所述软件的系统或模拟系统为嵌入式系统或者为在所述主机上的嵌入式运行环境即模拟的嵌入式系统。5、如权利要求4所述的方法,其特征在于:所述出错步骤是指执行软件时发生错误的步骤,包括软件中的一条或多条指令。6、一种寻找软件错误的系统,其特征在于,包括运行所述软件的系统或模拟系统,以及存储模块、控制模块和比较模块,其中:所述存储模块包括第一数据存储单元,用于保存在执行软件的出错步骤之前从运行所述软件的系统或模拟系统中获取的全局变量的数值;以及第二数据存储单元,用于保存在...

【专利技术属性】
技术研发人员:游明琦
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1