[发明专利]一种内存故障检测方法及装置有效
申请号: | 201910620003.8 | 申请日: | 2019-07-10 |
公开(公告)号: | CN110457150B | 公开(公告)日: | 2023-03-21 |
发明(设计)人: | 熊化春 | 申请(专利权)人: | 锐捷网络股份有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F9/52 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 350002 福建省福州市仓*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 故障 检测 方法 装置 | ||
本发明实施例提供一种内存故障检测方法及装置。该方法包括:预先编译内存操作函数的重构函数,获取内存操作的内存信息和申请者信息;建立内存故障检测红黑树,当有内存操作时,将计算机程序链接至内存操作函数对应的重构函数,在红黑树中增加当前内存操作对应的节点,获取当前内存操作的内存信息和申请者信息并保存;在计算机程序编译过程中,在内存访问的指令中增加检测代码,获取当前访问的内存信息;遍历红黑树节点,对比访问的内存信息和红黑树节点中保存的内存信息,根据对比结果确定是否出现内存故障并根据红黑树中保存的申请者信息确定出现内存故障的申请模块。本发明实施例能够快速定位出现故障的模块。
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种内存故障检测方法及装置。
背景技术
内存改写、内存泄漏和死锁是代码开发过程中的常见问题,内存改写主要分为3种情形:内存越界、访问已释放内存和指针异常。内存泄漏是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费。死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。
目前内存故障检测工具主要为valgrind,valgrind中用于内存检测的工具为memcheck。对于内存改写,memcheck维护两个全局表valid-value和valid-address。valid-value对于整个地址空间的每一个字节,都有与之对应的8个bit,CPU的每个寄存器也有对应的bit向量,该表负责记录字节或者寄存器是否具有有效的、已经初始化的值;valid-address对于进程整个地址空间中的每一个字节,都有与之对应的1个bit负责记录该地址能否被读写。当进行内存读写操作时会从valid-value和valid-address这两个全局表取值,判断地址是否可读写或者是否初始化。对于内存泄漏,memcheck判断是否存在指向分配地址的指针,若只存在指向分配内存的指针但不是首地址则认为是可能泄漏,如果没有指针指向已分配内存则认为直接泄漏。对于多线程锁的检查则是另外一个工具helgrind,通过记录加锁、解锁的线程和位置,当发生死锁时,中断程序后则会输出占用锁的线程。
valgrind对于内存改写和内存泄漏都有比较好的支持,但工具内存损耗和性能都较为严重,当一个应用由多个模块组成时,valgrind无法进一步定位出现问题的模块。
发明内容
针对现有技术中的缺陷,本发明实施例提供了一种内存故障检测方法及装置。
第一方面,本发明实施例提供一种内存故障检测方法,包括:
预先编译内存操作函数的重构函数,所述重构函数用于获取内存操作的内存信息和申请者信息;
建立内存故障检测红黑树,在计算机程序编译过程中,当有内存操作时,将计算机程序链接至内存操作函数对应的重构函数,在所述红黑树中增加当前内存操作对应的节点,获取当前内存操作的内存信息和申请者信息,并在所述节点中保存所述内存信息和申请者信息;
在计算机程序编译过程中,在内存访问的指令中增加检测代码,所述检测代码用于获取当前访问的内存信息;
遍历红黑树节点,对比访问的内存信息和所述红黑树节点中保存的内存信息,根据对比结果确定是否出现内存故障;
若出现内存故障,则根据所述红黑树节点中保存的申请者信息确定出现内存故障的申请模块。
如上述方法,可选地,所述预先编译内存操作函数的重构函数,所述重构函数用于获取内存操作的内存信息和申请者信息,包括:
预先编译各个模块的内存分配函数的重构函数,所述重构函数用于在分配内存时多申请预设字节的隔离带以隔离不同的内存分配,并获取当前分配的内存首地址、内存大小和申请分配内存的模块信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于锐捷网络股份有限公司,未经锐捷网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910620003.8/2.html,转载请声明来源钻瓜专利网。