检查后台程序内存泄露并定位泄露内存点的系统及方法技术方案

技术编号:9489905 阅读:232 留言:0更新日期:2013-12-25 23:39
本发明专利技术提出了一种检查后台程序内存泄露并定位泄露内存点的系统,包括判断是否达到触发抓取使用中的内存记录的条件的判断单元、进行内存表抓取的提取单元、将对比的记录日志进行排序的处理单元以及对内存日志进行对比的对比单元,判断单元、提取单元、处理单元以及对比单元依次连接。本发明专利技术检查后台程序内存泄露并定位泄露内存点的方法,就可以快速准确的找到嵌入式设备中后台服务程序的内存泄露的泄露内存节点,进而可以快速的修正而避免产生内存泄露的问题。

【技术实现步骤摘要】
【专利摘要】本专利技术提出了一种检查后台程序内存泄露并定位泄露内存点的系统,包括判断是否达到触发抓取使用中的内存记录的条件的判断单元、进行内存表抓取的提取单元、将对比的记录日志进行排序的处理单元以及对内存日志进行对比的对比单元,判断单元、提取单元、处理单元以及对比单元依次连接。本专利技术检查后台程序内存泄露并定位泄露内存点的方法,就可以快速准确的找到嵌入式设备中后台服务程序的内存泄露的泄露内存节点,进而可以快速的修正而避免产生内存泄露的问题。【专利说明】
本专利技术涉及嵌入式设备的持续后台服务领域,尤其涉及一种检查嵌入式设备后台程序内存泄露并定位泄露内存点的系统及方法。
技术介绍
嵌入式设备的CPU运算能力越来越快,内存也越来越大,具备了更强的运算处理能力。越来越多的后台服务程序也越来越多。而一些频繁申请和释放内存的的后台服务程序,如果有内存泄露的问题发生并要追查,因为持续的运行服务中,一些内存结构有重复不断的申请和释放,如果追踪每条申请和释放内存的信息日志,因为要在海量的内存申请和释放的日志直接对比是需要花费非常巨大的精力和时间的。服务程序有运行时间长的特征,尤其是复杂设计流程,不同的条件参数会有不同的分支程序执行,而有些泄露路径有并不容易能重现,数天的运行,或许偶尔才能碰到(重现)一次,因为无法预料什么时候会运行中发生问题,又因为后台服务程序,内部的一些动态的节点信息,运行中间也可能通过不断的realloc进行增长或者减少,并且有些节点保存的信息也会传递给新申请(alloc)的内存节点,并释放(free)原来旧的内存信息点,导致并不能通过对比每个节点的申请分配的地址和大小进行简单的对比找出差异。此外一些很重要需要开机后便一直运行提供服务的后台服务程序,并无(停止)服务的状态,所以没有办法简单的通过对比模块进入和退出自动内存可用内存数以及使用内存的对比和检查(因为一些服务是开机即运行,关机才停止,中间时间不间断服务)。而常见的方式使用日志记录一些调试信息,针对内存泄露,如输出整个内存中被使用的内存块的信息,只是嵌入式服务程序输出的大量(海量)内存日志,需要花费很多时间进行分析,无法迅速得到泄露的模块和代码位置。服务程序源代码审查(code review)虽然是一种检测方式,通过对比分析源代码找出内存可能泄露的隐患,虽然也是一种有效手法,但却依赖源代码审查人员的评审者的细心程度和水平,对于复杂的系统,代码审查工作量巨大,要花费相当的时间和精力。而且代码审查这种工作,尤其是针对一些(RTC)运行时的内存需求,动态的申请释放大小,也很难代码静态观察,加上一些条件分支等逻辑判别,所以也并不能100%保证查出所有的内存漏洞,复杂的后台服务程序,如果一旦存在泄露,就会慢慢的消耗嵌入式系统的内存,吞噬的内存以后,系统运行的速度也会越来越慢,并且如果一直运行,让系统内存耗尽之后,出现功能异常,而影响正常的服务功能甚至当机。
技术实现思路
为了解决
技术介绍
中所存在的技术问题,本专利技术提出了一种检查后台程序内存泄露并定位泄露内存点的方法,就可以快速准确的找到嵌入式设备中后台服务程序的内存泄露的泄露内存节点,进而可以快速的修正而避免产生内存泄露的问题。本专利技术的技术解决方案是:检查后台程序内存泄露并定位泄露内存点的系统,其特征在于:所述系统包括判断是否达到触发抓取使用中的内存记录的条件的判断单元、进行内存表抓取的提取单元、将对比的记录日志进行排序的处理单元以及对内存日志进行对比的对比单元,所述判断单元、提取单元、处理单元以及对比单元依次连接。检查后台程序内存泄露并定位泄露内存点的方法,其特征在于:所述方法包括以下步骤:I)运行后台服务程序;2)判断是否达到触发抓取使用中的内存记录的条件,若是,则进行步骤3);3)抓取使用中的内存表;4)以内存块大小为排序关键字,将对比的记录日志进行排序;5)获取I份记录日志,并据此判断是否抓取更多的记录,若是,返回步骤2);上述步骤5 )之后还包括步骤6 )获取2份记录日志,对2份记录日志进行对比。上述步骤6)的具体步骤是:6.1)选取要对比的2份日志;6.2)输入Tl时间抓取的A状态的记录日志;6.3)输入T2时间抓取的B状态的记录日志;6.4)将2份日志进行内容对比,对比结果中抽出B状态内存记录中相对于A状态缺少的内存节点信息得到集合a ;6.5)对比结果中抽出B状态内存记录中相对于A状态独有的内存节点信息得到集合b ;6.6 )a集合中的内存数据忽略内存大小,以内存申请源代码文件名、内存申请源代码行数两项信息作为检索关键字,在集合b中寻找到匹配的节点;6.7)判断集合b中是否找到I个匹配的节点,若是,删除b集合中找到的该节点,若否,进行步骤6.8);6.8)判断a集合中的节点是否搜索完,若是,根据剩余b集合点诊断和定位内存泄露问题。上述步骤3)中使用中的内存表至少包含申请使用中的内存块大小、内存申请调用处的源代码文件名、内存申请内存调用处的源代码的行数。上述步骤6.4)将2份日志进行内容对比的对比内存表至少包括内存大小,内存申请源代码文件名、内存申请源代码行数。本专利技术检查后台程序内存泄露并定位泄露内存点的方法,针对嵌入式设备复杂的持续后台服务程序,仅仅导出所有使用中的内存节点信息的日志。日志中记录的使用中的内存节点信息至少包含有:申请的内存源代码文件名(—FILE—)和源代码相关行数(―LINE—)以及申请释放的内存块的内存大小。通过对要追查的后台服务程序,在设定的出发记录日志的条件的时候的将嵌入式系统中使用的内存以日志输出到UART (串口)或者LOG文件中,并针对选定的任意2分日志信息的采取一些筛选和对比手法,即可精简和抽取定位到泄露的内存节点信息,进而快速定位和解决复杂后台服务程序的内存泄露问题。此方法简单的在一些触发条件下通过打印整个内存中申请使用中的所有节点集合(Log日志),依据运行时间先后顺序打印不同的Log(只要输出不同的Log),即便需要运行并持续数日的服务程序,只要泄露问题能重现,就可以对比抓取的Log信息,快速锁定问题相关的代码,并针对Log内容可以自动的过滤后台服务程序释放后再重新申请的替代节点的干扰,特别适用于服务程序内有不断的释放和在申请的情况下内存泄露问题的检查和定位泄露的内存问题,能自动过滤繁琐的释放-再申请数据的干扰对比信息,且能自动筛选出重点怀疑对象,并列举出改节点的申请的源代码的具体位置,快速准确的供开发人员进行排查和差错,进而快速修正后台服务程序出现的内存泄露。【专利附图】【附图说明】图1是本专利技术的结构示意图;图2、图3是本专利技术的方法流程图;【具体实施方式】本专利技术的检查后台程序内存泄露并定位泄露内存点的系统,包括判断是否达到触发抓取使用中的内存记录的条件的判断单元1、进行内存表抓取的提取单元2、将对比的记录日志进行排序的处理单元3以及对内存日志进行对比的对比单元4,判断单元1、提取单元2、处理单元3以及对比单元4依次连接。本专利技术提出了一种检查后台程序内存泄露并定位泄露内存点的方法,包括以下步骤:I)运行后台服务程序;2)判断是否达到触发抓取使用中的内存记录的条件,若是,则进行步骤3);3)抓取使用中的内存表;使用中的内存表至少包含申本文档来自技高网
...

【技术保护点】
检查后台程序内存泄露并定位泄露内存点的系统,其特征在于:所述系统包括判断是否达到触发抓取使用中的内存记录的条件的判断单元、进行内存表抓取的提取单元、将对比的记录日志进行排序的处理单元以及对内存日志进行对比的对比单元,所述判断单元、提取单元、处理单元以及对比单元依次连接。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈淮琰钟辉
申请(专利权)人:无敌科技西安有限公司
类型:发明
国别省市:

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

1