嵌入式系统实时监控内存的方法技术方案

技术编号:4360106 阅读:304 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种嵌入式系统实时监控内存的方法,该方法包含下列步骤:1)执行程序;2)根据程序的需求分配内存区块;3)在内存区块的起始地址与结束地址分别配置数据断点;4)提供起始地址与结束地址给程序而存取内存区块;5)在存取内存区块触及起始地址与结束地址之一时,触发数据断点。本发明专利技术可快速的定位出程序内存越界的错误,为使用者减轻对内存破坏问题的除错的难度,加快软件开发排除速度,缩短开发周期,节省开发人力成本,提升软件质量。

【技术实现步骤摘要】

本专利技术涉及一种监控内存方法,尤其是一种。
技术介绍
嵌入式系统为了追求程序执行的高效率,开发中软件所使用的语言往往不具备内存垃圾 回收机制的语言,如汇编、C、 0++等。然而,在庞大的软件系统开发中,内存破坏的现象是 无法避免,几万行的代码中,几乎就一定会存在内存破坏的环节,使得内存破坏成了开发过 程非常棘手的问题。由于程序执行时其程序需要占用内存,因而会发生越界读取内存等错误 ,尤其是引入了多执行绪(Multi-thread)的系统,这些错误不仅会导致程序运作过程的流 程出错,甚至会导致系统瘫痪,造成嵌入式系统的稳定性不佳。在个人计算机应用领域中,多会使用一些如Purify, BoundsCheck, Valgrind, 111训1"6++等专业的内存检测软件,但其监测破坏后需要在内存释放的时候或者在分配内存资 源的时候,才能发现错误,即破坏后不能马上报告而不具时效性,使得程序的除错(debug )难度大幅增加。另外,这种内存检测软件对于自行开发的操作系统无法不能完全兼容,也 使得侦错效果相当有限。因此,如何实时监控内存是否存在越界的读写或操作,以对内存破坏处的代码实时的定 位和修正,进而縮短嵌入式系统软件开发的周期,是一个刻不容缓的待解决课题。
技术实现思路
本专利技术为解决
技术介绍
中存在的上述技术问题,而提出一种嵌入式系统实时监控内存的 方法。本专利技术的技术解决方案是本专利技术是一种,其特殊之处在于该方法包含下列步骤1) 执行程序;2) 根据程序的需求分配内存区块;3) 在内存区块的起始地址与结束地址分别配置数据断点;4) 提供起始地址与结束地址给程序而存取内存区块;5) 在存取内存区块触及起始地址与结束地址之一时,触发数据断点。 上述步骤5)之后还包括以下步骤37) 释放内存区块;移除数据断点。执行步骤步骤3)前,先提供校验数据,并定时根据校验数据进行校验。 上述步骤2)中先计算程序所需的内存区块的大小,再根据其需求分配内存区块IO。 上述步骤2)中根据分配比例增加受分配的内存区块。上述分配比例为随着内存资源变化,在调试版本中仅修改内存管理中的分配和释放的函 数,或者使用挂入功能外包一层内存管理的函数。上述步骤3)中,是根据内存区块的预设比例配置数据断点。本专利技术利用内存区块前后动态配置数据断点以达到实时监控内存破坏,对内存区块前后 边界监控范围的选取,需要根据系统调试阶段内存的充裕程度来决定。因为数据断点的自动 配置,程序如果越界触及到内存区块前后设置的边界区域的时候,便会触发数据断点,而能 自动的告知使用者已经有内存的越界操作,从而快速的定位出程序内存越界的错误,从而为 使用者减轻对内存破坏问题的除错(debug)的难度,加快软件开发排除速度,縮短开发周 期,节省开发人力成本。提升软件质量。附图说明图l为本专利技术流程图2为本专利技术内存地址不需要按照一定规则对齐的示意图; 图3为本专利技术内存地址需要按照一定规则对齐的示意图。其中,10-内存区块,20-数据断点,21-空隙,30-数据断点,31、 32-空隙; 具体实施例方式参见图l、图2,该方法包含下列步骤 步骤101:执行程序。步骤102:根据程序的需求分配内存区块IO。在此步骤中,先计算程序所需的内存区块10的大小,再根据其需求分配内存区块IO,并 可根据分配比例增加受分配的内存区块IO,其中,分配比例为随着内存资源变化,在调试版 本中仅修改内存管理中的分配和释放的函数,或者使用挂入功能(HOOK)外包一层内存管理 的函数,根据系统内存资源的充裕程度,在分配的时候增加受分配的内存区块IO,如系统内 存资源越充裕,则分配比例可以越大,而若内存资源紧凑,则分配比例可以设定为较小,甚 至还可以结合所需分配内存的数量,动态的计算需要扩大的内存区块IO。此外,分配比例除 可随着内存资源变化外,也可根据实际情状设定为特定的默认值。步骤103:在内存区块10的起始地址与结束地址分别配置数据断点20与30。 在内存区块10的起始地址配置数据断点20,在内存区块10的结束地址配置数据断点30,其中,位于起始地址的数据断点20的大小可相同于位于结束地址的数据断点30,但本专利技术不限于此,数据断点20的大小可不同于数据断点30,如数据断点20的大小大于数据断点30,或是数据断点20的大小小于数据断点30。此外,位于起始地址的数据断点20的大小可为大于0字节,位于结束地址的数据断点30的大小可为大于O字节,但本专利技术不限于此,数据断点20或30的大小可等于0字节,但不能同时为O字节。步骤104:提供起始地址与结束地址给程序而存取内存区块IO。当数据断点20与30设置完成后,将内存区块10的起始地址与结束地址提供给程序而存取 内存区块IO。步骤105:在存取内存区块10触及起始地址与结束地址之一时,触发数据断点20或30。 在程序执行过程中,存取内存区块10时触及存取内存区块10的边界区域,若触及起始地 址,触发数据断点20;若触及结束地址,触发数据断点30,通过触发数据断点20或30而能自 动的告知开发人员,已经有内存区块10的越界操作,从而可快速的定位出程序内存区块10越 界的错误。步骤106:停止执行程序。步骤107:释放内存区块IO,并移除数据断点20或30。当停止执行程序而不再需求内存区块10时,即可释放内存区块IO,同时移除位于内存区 块10边界区域的数据断点20或30。整个流程完全不需要修改程序,但却可以有效地实时的监 测出内存区块10是否有读写越界的操作。如果按8%等比例放大检测,程序要求IOO个字节的内存区块IO,则前后再配置大小为4个 字节的数据断点20与30,而直接向系统申请108个字节。此后,使用者实际上可以正常存取 的资料应该是4 104的范围,而0 4为数据断点20, 104 108为数据断点30。当程序释放内 存区块l0时,再动态地移除申请时候设置的数据断点20与30。此外,数据断点20与30的大小可以根据实际需求设置,如根据前述8%等比例放大检测, 数据断点20可为6字节,数据断点30可为2字节;甚至数据断点20为8字节,数据断点30为0字 节,或者数据断点30为8字节,数据断点20为0字节。再如调试时内存足够充裕,如按50%等 比例放大检测,程序申请100个字节,则数据断点20与30的宽度总共为50个字节,针对内存 寻址需要字节对齐的平台,可以再估算内存对其需要空隙(gap)的字节数。调试时系统内5存足够充裕,可以适当的再加宽数据断点20与30,可以减少内存跳跃式破坏(如跳跃过数据 断点20和30)而未能监控到的概率。若嵌入式系统对时效性需求程度较高时,可在步骤103前提供校验数据,并定时根据校 验数据进行校验,即可定时的扫描校验数据,而及时地回馈出来内存区块10是否有越界破坏 的操作,通过快速地找到程序中内存破坏的隐患,减少因为内存破坏的问题所需除错( debug)的时间。参见图3,在步骤103中,可根据内存区块10的预设比例配置数据断点20与30,其中,预 设比例包含第一比例与第二比例,即可根据内存区块10的第一比例配置位于起始地址的数据 断点20,根据内存区块10的第二比例配置位于结束地址的数据断点30;在此,第一比例可大 于等于本文档来自技高网...

【技术保护点】
一种嵌入式系统实时监控内存的方法,其特征在于:该方法包含下列步骤: 1)执行程序; 2)根据程序的需求分配内存区块; 3)在内存区块的起始地址与结束地址分别配置数据断点; 4)提供起始地址与结束地址给程序而存取内存区 块; 5)在存取内存区块触及起始地址与结束地址之一时,触发数据断点。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈淮琰钟辉杨党林刘刚
申请(专利权)人:无敌科技西安有限公司
类型:发明
国别省市:87[中国|西安]

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

1