[发明专利]一种内存重复释放错误检测方法有效

专利信息
申请号: 201710467495.2 申请日: 2017-06-20
公开(公告)号: CN107220182B 公开(公告)日: 2019-07-26
发明(设计)人: 李盼;张开禾;卢向雨;王冲;李祥;崔利东;韩乐然 申请(专利权)人: 中国电子科技集团公司第五十四研究所
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 河北东尚律师事务所 13124 代理人: 王文庆
地址: 050081 河北省石家*** 国省代码: 河北;13
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种内存重复释放错误检测方法,属于软件工程技术领域。本方法包括建立内存池和操作队列池、将被调试程序对内存池中内存块的每一次申请或释放操作记录到该内存块所对应的操作队列中、判断是否明显重复释放、根据操作队列所记录的信息在程序代码中定位导致程序错误的代码位置等步骤。本发明方法严谨、简洁而紧凑,并且便于实现,尤其是采用了内存池和操作队列池这种数据结构为内存调用排错提供了坚实基础,相对于现有技术能够更加简单高效地定位代码中引起内存重复释放错误的位置,是对现有代码排查调试技术的一种重要改进。
搜索关键词: 一种 内存 重复 释放 错误 检测 方法
【主权项】:
1.一种内存重复释放错误检测方法,其特征在于,包括以下步骤:(1)建立内存池和操作队列池;操作队列池中的操作队列与内存池中的内存块一一对应,每一个内存块包括内存块标识字段、占用状态字段和存储数据字段,操作队列中的每个元素包括操作类型字段、代码文件标识字段、代码行号字段和操作时间字段;(2)将被调试程序对内存池中内存块的每一次申请或释放操作记录到该内存块所对应的操作队列中;(3)对于每一次内存操作,若该次操作的类型为释放内存,且该次操作所对应的内存块的占用状态字段为未占用,则引发人为系统崩溃;(4)当系统发生自然崩溃或人为崩溃时,根据崩溃现场确定引起系统崩溃的内存块,从操作队列池中查找该内存块所对应的操作队列,根据该操作队列所记录的信息在程序代码中定位导致程序错误的代码位置;所述自然崩溃是指,被调试程序的不同模块之间由于存在潜在的逻辑错误,导致一个模块申请的内存被另一个模块释放,此时当申请内存的模块再次读取该内存块时所导致的系统崩溃;所述步骤(4)中根据操作队列所记录的信息在程序代码中定位导致程序错误的代码位置的具体方式为:(401)将操作队列中的元素顺序反转并另行存储,形成原操作队列的镜像操作队列;(402)从当前镜像操作队列的头部开始逐一取出元素,直到取出操作类型为释放的元素;(403)从当前镜像操作队列的头部再取出一个元素,判断该元素的操作类型,若操作类型也为释放,则定位两次连续释放操作所对应的代码位置,结束检测;若操作类型为申请,则继续后续步骤;(404)判断最后取出的两个元素的对应操作是否逻辑匹配,若匹配则重复步骤(402),否则继续后续步骤;(405)从当前镜像操作队列的头部开始向后查找第一个与当前最后一个被取出的释放元素逻辑匹配的申请元素,再从该申请元素开始向前查找最近的释放元素,判断该最近的释放元素是否与本步骤中的申请元素逻辑匹配,若是则定位本步骤中所涉两个释放元素的对应代码位置,结束检测;否则从当前镜像操作队列的头部开始逐一取出元素直至取出本步骤所述的最近的释放元素,然后重复本步骤(405)。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技集团公司第五十四研究所,未经中国电子科技集团公司第五十四研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201710467495.2/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top