第35卷第20期No.29计算机工程2009年10月 软件技术与数据库 文章编号:10023428(2019)20__0044_03 文献标识码:A 中国分类号:N 945 嵌入式软件动态内存检测工具的设计与实现 刘发贵1, 温宇龙2, 罗春威1 (1.华南理工大学计算机科学与工程学院,广州510006;2.华南理工大学软件工程学院,广州510006) 摘要:为了解决嵌入式软件中存在的内存泄漏、内存写溢出等问题,文章建议采用数据采集和测试分离的交叉测试方法,在嵌入式Linux平台下进行,并成功设计出一个用于检测嵌入式软件动态内存的工具。这个装置能够发现软件中内存的异常消耗、内存的非法写入、无用的指针释放以及内存管理操作的错误,利用一个案例来证明它的准确性和稳定性。动态内存检测技术;嵌入式系统开发;内存资源管理不当问题;多平台验证工作;系统稳定性保障工作设计并实现了适用于嵌入式软件的动态内存监测工具研发工作李富贵,温宇,罗春伟(1.华南理工大学计算机科学与工程学院,广州510006;2.华南理工大学软件工程学院,广州510006)
摘要我正在研究嵌入式软件中的内存泄漏和内存溢出问题,本文提出了一种基于嵌入式Linux平台的交叉测试方法,将数据收集和测试分离以提高测试效率。实现了一个动态内存检测工具,可用于检测内存泄漏、内存溢出以及内存管理功能错误。通过实例展示了该工具的有效性和可靠性。

嵌入式软件的品质及其研发时长,对于最终产品水准与推向市场的时间具有关键影响,所以嵌入式软件的检测成为学术界关注的焦点,这一点毋庸置疑。嵌入式系统内存容量有限,且对响应时间有严格标准,嵌入式程序一旦发生内存使用不当等情况,必定造成可用内存总量下降,极端状况下甚至会导致系统完全失效。因此,如何妥善处理内存使用异常、内存资源分散以及内存系统故障等问题,对于嵌入式程序设计工作变得愈发关键。嵌入式系统软件的检测工作,相较于普通商业软件的检测,要更为繁复,可以说,嵌入式系统软件是所有软件类型中检测难度最大的一种。现阶段,国内外已经存在一些内存检测工具。国内开发的FEN SE工具,其功能仅限于识别符合标准C语言的内存泄漏和写越界异常,但在用户友好度、额外资源消耗以及运行效率等方面,对于嵌入式系统平台的表现并不令人满意。海外存在Puri fy,Val gri nd,M patro,M em trace,M em prof等软件。它们均采用单机模式执行数据采集和处理任务,这对内存及计算能力有限的嵌入式设备来说,会造成显著的性能开销。另外,对于持续工作的嵌入式软件而言,程序终止后检查内存状况颇为不便。目前,普遍采用的内存故障诊断技术包括程序代码插入、目标代码插入,以及设置防护字节等。本文借助代码植入与安全字符嵌入两种技术,构思了一种数据获取和验证分离的联合检测方案,开发出一种嵌入式系统动态存储空间监察装置,此装置能够确保检测结果的精确性、稳定性、时效性,还能提升嵌入式系统资源的利用效能。内存故障诊断涵盖内存资源耗尽、内存写入越界、内存分配与释放操作不对应、无效指针引用、内存申请不成功、空指针访问、内存区域未设定初始值、指针悬空以及内存重复释放、栈内存地址泄露、内存操作函数参数错误等情形。具体来说,常见的内存故障有四种类型:(一)内存资源未释放。内存中存在未被及时回收的空间,这种现象被称为内存泄漏,这些空间是在程序执行过程中动态申请的,但任务完成后未能得到妥善处理,操作系统无法重新利用它们。( 2) 当写入操作超出了预设的内存界限时,便构成了内存写溢出,这种情况等同于内存写越界,意味着数据被写入到了非规划的区域。( 3) 内存管理过程中,分配与释放函数若不相对应,也可能引发问题,比如采用new操作符进行内存分配,却使用free函数来释放,这样就会造成内存使用混乱。出现这类程序会出现运行结果不确定的情况,4 野指针属于一个错误类型,它不是空指针,而是指向无用内存区域的指针,3 测试工具的整体规划顾及到嵌入式系统资源有限的特点,本文决定使用数据收集和测试执行分离的交互测试策略,待测文件在开发设备上实施交叉编译形成可执行程序,再在嵌入式系统的目标设备上执行,并且同步进行数据采集。利用TCP/IP协议将收集的数据传送到开发设备上,然后实施数据分析,通过图形界面清晰展示内存存在的各种状况,3.1总体框架图1为测试的整体结构。该系统在开发端与使用端均有特定构成,其功能细分如下:开发端设有两个组成部分,分别为检测单元和插入单元;使用端则对应配备相应的处理单元;项目资金来源于两项支持,分别是2007年粤港关键领域重点突破基金,项目编号2007A010101003,以及广东省教育部产学研结合示范基地基金,项目编号2007B0902000181;作者信息包括刘发贵,她是一位出生于1963年的女性学者,担任教授、博士及博士生导师,主要研究领域为操作系统和嵌入式软件;同时还有温宇龙和罗春威两位硕士研究生参与;文章收稿日期为2009年1月23日;联系邮箱为fgliu@scut.edu.cn。