[发明专利]一种嵌入式软件动态内存检测的方法有效
申请号: | 200810030261.2 | 申请日: | 2008-08-19 |
公开(公告)号: | CN101354675A | 公开(公告)日: | 2009-01-28 |
发明(设计)人: | 刘发贵;温宇龙 | 申请(专利权)人: | 华南理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 广州粤高专利代理有限公司 | 代理人: | 何淑珍 |
地址: | 510640广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 软件 动态 内存 检测 方法 | ||
技术领域
本发明属于嵌入式系统的内存动态检测领域,特别是涉及一种将数据采集和测试分离的交叉测试的方法。
技术背景
随着嵌入式技术的发展,嵌入式应用的不断增长以及嵌入式系统复杂性不断提高,嵌入式软件的规模和复杂性也不断提高,有限的硬件资源和功能越来越强的需求依然是嵌入式软件开发领域的主要矛盾,嵌入式软件必须做到精简高效、稳定可靠。嵌入式软件的质量和开发周期对产品的最终质量和上市时间起到决定性的影响,这使得嵌入式软件的开发、分析与测试成为了研究的热点。
嵌入式软件与个人微机软件有着巨大的差别,这表现在它与硬件关系紧密、内存不丰富,可靠性和实时性要求高的几个方面。嵌入式软件如果出现内存泄漏等问题,势必导致系统可用内存减少,严重的可能引起系统的崩溃。
如何有效管理内存泄露、内存碎片和内存崩溃等问题对嵌入式软件开发变得越来越突出。同时,考虑到嵌入式平台主要利用率的问题,测试应该尽可能的减小开销。
目前,内存使用错误的预防和处理方法分为静态分析和动态分析两类,静态分析工具研制复杂,目前还没有得到广泛使用的高效工具。动态分析又分为源代码插装法(SCI:Source Code Instrument)、目标码插装法(OCI:Object CodeInstrument)和添加保护字节法三类。
SCI法对原始程序进行语法扫描、分析,然后插入检测代码将其转换成新的、等价的源代码,这一过程对用户来说是完全透明的。在整个过程中,原始代码文件没有被修改,也不需要用户的任何介入。加工好的源文件最后被链接成可执行文件,从而为检测程序运行时错误做好准备。
OCI法对每个目标文件和库进行加工,并工作在汇编码级。在链接时,对每个文件进行解码,分析每条指令,发现与内存有关的指令,插入额外的代码以检查内存存取的准确性,并以临时文件的形式建立等价的模块。在所有的模块被改造完毕后,连接成最后的可执行程序。
添加保护字节法在每个内存块的边界添加保护字节,这些额外的字节用来标志该内存块并动态记录内存块的状态。在程序执行过程中,如果程序读写处于围墙上的字节,就被判为错误。同时,通过分析保护字节的信息,可以检测出该内存块是否被释放,从而判断是否发生内存泄漏。同SCI与OCI方法相比,此方法在实现上难度更大一些,而且添加的保护字节要占用大量的内存空间,对于大型的应用程序使用此方法检测效率很低。
常用的动态内存检测工具如Purify、Valgrind、Mpatro、Memtrace,Memprof等都是基于源代码插装法,FENSE则采用了源代码插装法和添加保护字节法相结合的方式。然而这些工具都是在同一个主机上采集和分析数据,对于资源紧缺的嵌入式平台而言,这些测试工具影响系统资源的利用率。
发明内容
本发明的目的在于克服现有技术的不足,提出了一种数据采集和测试分离的交叉测试方法,该方法能够准确度、可靠性、及时性的检测嵌入式软件的内存问题,同时保证嵌入式平台资源的利用率。
为了实现上述发明目的,采用的技术方案如下:
一种嵌入式软件动态内存检测的方法,将数据采集和数据测试分析相分离,即对涉及动态内存检测所需的数据采集步骤和数据测试分析步骤分别在不同的嵌入式主机进行,且进行数据测试分析的主机与进行数据采集的主机相互连接。
上述技术方案中,进行数据测试分析为开发机,开发机上设置有内存探测模块和插装库,进行数据采集为目标机,目标机上设置测试代理模块,所述内存探测模块集成于Eclipse平台,包括通信模块、数据管理模块、显示模块,所述通信模块与目标机上的测试代理模块建立连接,所述数据管理模块通过通信模块向测试代理模块发送可执行文件,并接收测试代理模块执行文件过程中发送过来的数据,所述显示模块进行分析数据和图形显示。
所述目标机的测试代理模块包括接收和执行文件模块、微观测试模块、宏观测试模块三部分,所述接收和执行文件模块与开发机建立通信,接收在开发机上经过交叉编译生成的可执行文件,并把微观测试模块和宏观测试模块获得的数据传输给开发机,所述微观测试模块捕捉可执行文件的内存操作行为,所述宏观测试模块根据嵌入式系统内存的变化判断是否出现内存问题。
所述插装库是内存信息统计库,在开发机上和被测试文件一起交叉编译生成可执行文件。
本发明具体包括如下步骤:
(1)嵌入式软件在开发机上进行交叉编译,把插装库和嵌入式软件一起编译生成相对于目标机的可执行文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华南理工大学,未经华南理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810030261.2/2.html,转载请声明来源钻瓜专利网。