[发明专利]一种嵌入式系统中自动检测内存越界的方法及系统有效
申请号: | 201410727543.3 | 申请日: | 2014-12-04 |
公开(公告)号: | CN104461880B | 公开(公告)日: | 2018-01-09 |
发明(设计)人: | 李靖禹;林鎏娟;林剑宇 | 申请(专利权)人: | 福建星网视易信息系统有限公司;福建星网锐捷通讯股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 福州市鼓楼区京华专利事务所(普通合伙)35212 | 代理人: | 林晓琴 |
地址: | 350000 福建省福州市仓山区建*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 自动检测 内存 越界 方法 | ||
技术领域
本发明涉及计算机领域,更具体地说,涉及一种用于嵌入式领域排查内存越界的检测方法和系统。
背景技术
嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。它具有系统内核小、专用性强、系统精简等特点。但是它也是一个资源受限的系统,与PC系统相比,它的内存空间较少、而且可靠性要求高。
内存越界(Heap Corruption),就是指当内存输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,导致系统异常。嵌入式领域广泛使用C/C++进行开发,不当的内存操作或者多线程,都可能导致内存越界问题。在嵌入式系统上排查越界问题,目前主要有三种方法,第一种是通过阅读源代码来反复查找,排查速度较慢;第二种方法是通过分析核心内存转储来找,但是必须要掌握反汇编语言和内存分配技术两个难点;第三种是利用越界检测工具,它可以准确定位,但是现有的工具通常是针对X86和ARM平台架构,而其他平台架构(如alpha,hppa,mips,ia64等)的越界检测工具则相对匮乏。虽然Valgrind工具支持平台较多,但在平台存在专有驱动的情况下,它的可用性相对较差,无法实现在目标平台架构上的使用。并且,越界检测工具的内存占用比正常程序通常要大,在嵌入式系统中应用较容易出现内存空间不足的情况。
发明内容
本发明要解决的技术问题之一,在于提供一种嵌入式系统中自动检测内存越界的方法,以解决现有技术中除X86和ARM平台架构外,一些嵌入式系统无可用越界检测工具和越界检测工具在嵌入式系统中出现内存空间不足的问题。
本发明要解决的技术问题之一是这样实现的:一种嵌入式系统中自动检测内存越界的方法,其特征在于:所述方法包括编译过程、交换分区过程和检测过程:
所述编译过程:对需要加入嵌入式系统中的应用进行编译,具体过程如下:
步骤10、对越界检测工具进行交叉编译成嵌入式系统的工具链和检测库;
步骤11、通过工具链编译所述应用的应用程序;
步骤12、链接检测库和所述应用程序,得到应用的可执行程序;
步骤13、在嵌入式系统中部署检测库和所述可执行程序;
所述交换分区过程:在嵌入式系统中创建交换分区,增加嵌入式系统的可用内存;
所述检测过程:在嵌入式系统中先加载检测库以自动启用越界检测功能,然后再加载及运行所述可执行程序:若所述可执行程序运行时异常退出,判定出现内存越界;若所述可执行程序正常运行达到测试时长,则判定没有出现内存越界,结束检测。
较佳的,所述编译过程中的步骤11具体如下:
步骤111、进入所述应用程序的编译时,先初始化栈变量的映射内存标记,保留栈时也在栈前与栈后各保留32个字节的空间,用于检测过程中在映射内存上标记栈变量的起始位置和结束位置;
步骤112、在所述应用程序中使用具有检测功能的检测函数替换直接的指针读与写操作,便于检测过程中判断所述可执行程序的指针是否越界;
步骤113、退出所述应用程序的编译时,清空栈变量的映射内存标记。
较佳的,所述交换分区位于U盘、移动硬盘或网络文件系统中。
较佳的,所述检测过程中判断是否出现内存越界的步骤具体如下:
步骤20、调试所述可执行程序前先加载检测库,在检测库初始化时保留映射内存;
步骤21、将系统库函数替换为所述检测函数,用于检测所述可执行程序中的函数调用是否越界;
步骤22、进入检测函数时在映射内存上标记栈变量的起始位置和结束位置;
步骤23、先检测指针是否在非法地址上,若是,则判断指针读或者写越界;若否,再检测函数调用是否合法,若不合法,则判定内存越界,若合法,则所述可执行程序正常运行达到所述测试时长后,判定没有出现内存越界,将退出检测函数清除栈变量的映射内存标记。
较佳的,所述检测过程还包括,当判定内存越界时,将自动打印日志并直接让所述可执行程序退出,以便准确定位内存越界位置和保留所述可执行程序运行时的栈信息和调试信息,从而在服务器上分析出现内存越界的原因。
本发明要解决的技术问题之二,在于提供一种嵌入式系统中自动检测内存越界的系统,以解决现有技术中除X86和ARM平台架构外,一些嵌入式系统无可用越界检测工具和越界检测工具在嵌入式系统中出现内存空间不足的问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建星网视易信息系统有限公司;福建星网锐捷通讯股份有限公司,未经福建星网视易信息系统有限公司;福建星网锐捷通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410727543.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种写缓存的方法及装置
- 下一篇:测试笔记本电脑外接显示接口的系统及方法