[发明专利]检查后台程序内存泄露并定位泄露内存点的系统及方法无效
申请号: | 201310401190.3 | 申请日: | 2013-09-05 |
公开(公告)号: | CN103473172A | 公开(公告)日: | 2013-12-25 |
发明(设计)人: | 陈淮琰;钟辉 | 申请(专利权)人: | 无敌科技(西安)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安智邦专利商标代理有限公司 61211 | 代理人: | 商宇科 |
地址: | 710075 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 检查 后台程序 内存 泄露 定位 系统 方法 | ||
技术领域
本发明涉及嵌入式设备的持续后台服务领域,尤其涉及一种检查嵌入式设备后台程序内存泄露并定位泄露内存点的系统及方法。
背景技术
嵌入式设备的CPU运算能力越来越快,内存也越来越大,具备了更强的运算处理能力。越来越多的后台服务程序也越来越多。而一些频繁申请和释放内存的的后台服务程序,如果有内存泄露的问题发生并要追查,因为持续的运行服务中,一些内存结构有重复不断的申请和释放,如果追踪每条申请和释放内存的信息日志,因为要在海量的内存申请和释放的日志直接对比是需要花费非常巨大的精力和时间的。
服务程序有运行时间长的特征,尤其是复杂设计流程,不同的条件参数会有不同的分支程序执行,而有些泄露路径有并不容易能重现,数天的运行,或许偶尔才能碰到(重现)一次,因为无法预料什么时候会运行中发生问题,又因为后台服务程序,内部的一些动态的节点信息,运行中间也可能通过不断的realloc进行增长或者减少,并且有些节点保存的信息也会传递给新申请(alloc)的内存节点,并释放(free)原来旧的内存信息点,导致并不能通过对比每个节点的申请分配的地址和大小进行简单的对比找出差异。
此外一些很重要需要开机后便一直运行提供服务的后台服务程序,并无(停止)服务的状态,所以没有办法简单的通过对比模块进入和退出自动内存可用内存数以及使用内存的对比和检查(因为一些服务是开机即运行,关机才停止,中间时间不间断服务)。
而常见的方式使用日志记录一些调试信息,针对内存泄露,如输出整个内存中被使用的内存块的信息,只是嵌入式服务程序输出的大量(海量)内存日志,需要花费很多时间进行分析,无法迅速得到泄露的模块和代码位置。
服务程序源代码审查(code review)虽然是一种检测方式,通过对比分析源代码找出内存可能泄露的隐患,虽然也是一种有效手法,但却依赖源代码审查人员的评审者的细心程度和水平,对于复杂的系统,代码审查工作量巨大,要花费相当的时间和精力。而且代码审查这种工作,尤其是针对一些(RTC)运行时的内存需求,动态的申请释放大小,也很难代码静态观察,加上一些条件分支等逻辑判别,所以也并不能100%保证查出所有的内存漏洞,复杂的后台服务程序,如果一旦存在泄露,就会慢慢的消耗嵌入式系统的内存,吞噬的内存以后,系统运行的速度也会越来越慢,并且如果一直运行,让系统内存耗尽之后,出现功能异常,而影响正常的服务功能甚至当机。
发明内容
为了解决背景技术中所存在的技术问题,本发明提出了一种检查后台程序内存泄露并定位泄露内存点的方法,就可以快速准确的找到嵌入式设备中后台服务程序的内存泄露的泄露内存节点,进而可以快速的修正而避免产生内存泄露的问题。
本发明的技术解决方案是:检查后台程序内存泄露并定位泄露内存点的系统,其特征在于:所述系统包括判断是否达到触发抓取使用中的内存记录的条件的判断单元、进行内存表抓取的提取单元、将对比的记录日志进行排序的处理单元以及对内存日志进行对比的对比单元,所述判断单元、提取单元、处理单元以及对比单元依次连接。
检查后台程序内存泄露并定位泄露内存点的方法,其特征在于:所述方法包括以下步骤:
1)运行后台服务程序;
2)判断是否达到触发抓取使用中的内存记录的条件,若是,则进行步骤3);
3)抓取使用中的内存表;
4)以内存块大小为排序关键字,将对比的记录日志进行排序;
5)获取1份记录日志,并据此判断是否抓取更多的记录,若是,返回步骤2);
上述步骤5)之后还包括步骤6)获取2份记录日志,对2份记录日志进行对比。
上述步骤6)的具体步骤是:
6.1)选取要对比的2份日志;
6.2)输入T1时间抓取的A状态的记录日志;
6.3)输入T2时间抓取的B状态的记录日志;
6.4)将2份日志进行内容对比,对比结果中抽出B状态内存记录中相对于A状态缺少的内存节点信息得到集合a;
6.5)对比结果中抽出B状态内存记录中相对于A状态独有的内存节点信息得到集合b;
6.6)a集合中的内存数据忽略内存大小,以内存申请源代码文件名、内存申请源代码行数两项信息作为检索关键字,在集合b中寻找到匹配的节点;
6.7)判断集合b中是否找到1个匹配的节点,若是,删除b集合中找到的该节点,若否,进行步骤6.8);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无敌科技(西安)有限公司,未经无敌科技(西安)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310401190.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:空调控制系统
- 下一篇:一种基于CPU负载的计算机保护方法及装置