[发明专利]一种嵌入式软件动态内存检测的方法有效
申请号: | 200810030261.2 | 申请日: | 2008-08-19 |
公开(公告)号: | CN101354675A | 公开(公告)日: | 2009-01-28 |
发明(设计)人: | 刘发贵;温宇龙 | 申请(专利权)人: | 华南理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 广州粤高专利代理有限公司 | 代理人: | 何淑珍 |
地址: | 510640广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 软件 动态 内存 检测 方法 | ||
1.一种嵌入式软件动态内存检测的方法,其特征在于在于将数据采集和数据测试分析相分离,即对涉及动态内存检测所需的数据采集步骤和数据测试分析步骤分别在不同的嵌入式主机进行,且进行数据测试分析的主机与进行数据采集的主机相互连接;进行数据测试分析为开发机,开发机上设置有内存探测模块和插装库,进行数据采集为目标机,目标机上设置测试代理模块,所述内存探测模块集成于Eclipse平台,包括通信模块、数据管理模块、显示模块,所述通信模块与目标机上的测试代理模块建立连接,所述数据管理模块通过通信模块向测试代理模块发送可执行文件,并接收测试代理模块执行文件过程中发送过来的数据,所述显示模块进行分析数据和图形显示;所述目标机的测试代理模块包括接收和执行文件模块、微观测试模块、宏观测试模块三部分,所述接收和执行文件模块与开发机建立通信,接收在开发机上经过交叉编译生成的可执行文件,并把微观测试模块和宏观测试模块获得的数据传输给开发机,所述微观测试模块捕捉可执行文件的内存操作行为,所述宏观测试模块根据嵌入式系统内存的变化判断是否出现内存问题。
2.根据权利要求1所述的嵌入式软件动态内存检测的方法,其特征在于所述插装库是内存信息统计库,在开发机上和被测试文件一起交叉编译生成可执行文件。
3.根据权利要求2所述的嵌入式软件动态内存检测的方法,其特征在于具体包括如下步骤:
(1)嵌入式软件在开发机上进行交叉编译,把插装库和嵌入式软件一起编译生成相对于目标机的可执行文件;
(2)开发机上的内存探测模块把可执行文件发送到目标机上,目标机通过测试代理模块的接收和执行文件模块接收并且执行相应的文件;
(3)在目标机上执行可执行文件的同时,微观测试模块和宏观测试模块收集数据,再通过测试代理模块把数据发送给开发机,开发机上的数据管理模块接收数据,再通过显示模块进行分析,并显示分析结果。
4.根据权利要求3所述的嵌入式软件动态内存检测的方法,其特征在于所述微观测试模块收集数据通过执行文件里的插装库实现,插装库通过改写嵌入式操作系统下的涉及内存操作函数,包括在这些函数里增加把对内存操作的信息发送到开发机上的代码,插装库里改写函数通过调用嵌入式操作系统标准库stdlib的内存操作函数实现,具体如下:
如果涉及内存操作函数,会被插装库的函数替换,接着调用目标机上标准库stdlib里面的相应函数;
如果涉及申请内存函数,那么就把申请成功内存的开始地址存入全局链表,出错就报错;
如果是释放内存函数,就搜索全局链表看是否存在该内存,如果没有就报错;
最后,获得内存操作的信息,保存起来,再发送给测试代理模块;
插装库设置一个全局链表List,当申请内存时,保存每次申请到的内存的地址;当释放内存时,在链表里面搜索给定内存的地址,然后从链表里面删除,从而保证数据一致性。
5.根据权利要求4所述的嵌入式软件动态内存检测的方法,其特征在于所述宏观检测模块先从宏观上判断一个进程是否存在内存泄漏,其通过获得应用程序堆空间,虚拟内存和实际内存的变化,来判断是否出现内存问题,具体操作如下:
测试代理模块执行被测试程序,获得被测试程序的进程号,再把这个进程号传送给内核态的宏观测试模块的kernel_user模块;
根据这个进程号,宏观测试模块的kernel_user模块搜索整个进程链表,找到相应的进程控制块PCB,所述进程链表保存在嵌入式操作系统的内核中;
根据进程控制块PCB获取进程的所有内核态信息,包括内存信息,同时把获得的内存信息写入字符设备驱动文件,
最后,应用态的测试代理模块读取字符设备驱动文件里面的数据,并且发送给开发机。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华南理工大学,未经华南理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810030261.2/1.html,转载请声明来源钻瓜专利网。