[发明专利]一种内存泄漏的检测方法、装置、系统及存储介质有效
申请号: | 201910886436.8 | 申请日: | 2019-09-19 |
公开(公告)号: | CN110781075B | 公开(公告)日: | 2022-08-30 |
发明(设计)人: | 秦金昆;吴闽华;孟庆晓;戴瑜 | 申请(专利权)人: | 深圳震有科技股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/53 |
代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 王永文;刘文求 |
地址: | 518057 广东省深圳市南山区粤海街*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 泄漏 检测 方法 装置 系统 存储 介质 | ||
本发明公开了一种内存泄漏的检测方法、装置、系统及存储介质,所述方法包括:接收CPU提供的debug命令,对内存分配函数和内存释放函数指令进行监控;当CPU执行到被监控的地址指令后,立刻触发debug异常;进入程序debugIsr();判断PC寄存器的函数地址;读取有效记录并存为文件;反汇编程序执行所述文件,确定申请了内存却没有释放的函数。相较于现有检测方法而言,本发明非常简洁高效,有效解决了现有内存泄漏检测方法中存在的操作复杂、检测效率低、检测困难等问题。
技术领域
本发明涉及计算机技术领域,具体涉及一种内存泄漏的检测方法、装置、系统及存储介质。
背景技术
内存泄漏是指程序中己动态分配的堆内存由于某种原因在使用完毕后未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,因此需要对内存泄漏进行有效的检测,以便开发人员对程序进行优化。
然而,检测内存泄漏,是一个很复杂的过程,有时候可以分析代码,找出内存泄漏的地方,但是代码量越来越庞大,代码结构越来越复杂,单纯靠检视已经无法定位出内存泄漏的地方;检测内存泄漏时,有时还会借助第三方工具或者软件来实现,对底层内存申请的函数进行监控,一旦申请成功,则把申请信息通过文件或者网络接口传递给用户,这样虽然能解决问题,但是如果设备在远程运行根本不具备连接控制台的能力,而且第三方软件又涉及到版权,还必须把其编译到目标系统上,前期的准备工作非常复杂。
因此,现有的内存泄漏检测技术存在操作复杂、检测效率低、检测困难等问题,还有待改进和提高。
发明内容
鉴于上述现有技术的不足之处,本发明的目的在于提供一种内存泄漏的检测方法、装置、系统及存储介质,旨在解决现有内存泄漏检测方法中存在的操作复杂、检测效率低、检测困难等问题。
为了达到上述目的,本发明采取了以下技术方案:
一种内存泄漏的检测方法,其中,所述方法包括如下步骤:
a、接收CPU提供的debug命令,对内存分配函数和内存释放函数指令进行监控;
b、当CPU执行到被监控的地址指令后,立刻触发debug异常;
c、进入程序debugIsr();
具体地,所述程序debugIsr()为debug异常中断程序。
d、判断PC寄存器的函数地址,如果所述PC寄存器的函数地址等于所述内存分配函数地址,则在固定内存开始处新增一条记录,用于记录调用栈、申请内存大小、申请成功的内存地址以及申请时间;如果所述PC寄存器的函数地址等于所述内存释放函数地址,则从固定内存开始处搜索所有记录,找出释放地址所在的记录,将这条记录删除;
e、读取有效记录并存为文件;
f、反汇编程序执行所述文件,确定申请了内存却没有释放的函数。
所述的一种内存泄漏的检测方法,其中,所述内存分配函数为malloc(),所述内存释放函数为free()。
所述的一种内存泄漏的检测方法,其中,所述步骤a之前包括步骤:
a0、CPU提供DAC1寄存器用于设置内存分配函数的地址,CPU提供DAC2寄存器用于保存内存释放函数的地址;
a1、固定内存地址的记录内容初始化设置,使能指令监控。
所述的一种内存泄漏的检测方法,其中,所述步骤c包括步骤:
c1、将debug异常中断时的调用栈和PC寄存器传入debugIsr()函数,作为其参数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳震有科技股份有限公司,未经深圳震有科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910886436.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:自动化测试方法、装置及存储介质
- 下一篇:一种测试用例批量测试方法及装置