[发明专利]一种内存跟踪方法及装置在审
申请号: | 202110558235.2 | 申请日: | 2021-05-21 |
公开(公告)号: | CN113297074A | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 黄金强 | 申请(专利权)人: | 百果园技术(新加坡)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 新加坡巴西班让路*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 跟踪 方法 装置 | ||
1.一种内存跟踪方法,其特征在于,所述方法应用于部署有被测进程的实例的主机上,所述主机与外部设备连接,所述主机包括监控进程以及内存跟踪进程;所述方法包括:
通过所述监控进程接收所述外部设备下发的被测进程的名称,所述被测进程为疑似发生内存泄露的、需要进行内存跟踪的进程;
所述监控进程根据所述被测进程的名称,获取所述被测进程在本机的内存资源数据;
当所述监控进程根据所述内存资源数据确定所述被测进程在本机疑似存在内存泄露时,则启动所述内存跟踪进程;
由所述内存跟踪进程调用进程跟踪ptrace函数对所述被测进程进行内存跟踪。
2.根据权利要求1所述的方法,其特征在于,所述由所述内存跟踪进程调用进程跟踪ptrace函数对所述被测进程进行内存跟踪,包括:
由所述内存跟踪进程获取所述被测进程的多个动态内存函数的函数地址,并记录所述函数地址;
调用ptrace系统接口建立所述内存跟踪进程与所述被测进程的跟踪关系;
将各函数地址对应位置中的指令替换为指定中断指令;
监听所述指定中断指令被执行时生成的中断信号。
3.根据权利要求2所述的方法,其特征在于,在所述由所述内存跟踪进程调用进程跟踪ptrace函数对所述被测进程进行内存跟踪之后,所述方法还包括:
当监听到所述中断信号时,确定触发所述中断信号的目标内存分配操作;
获取所述目标内存分配操作对应的调用栈,并记录所述调用栈。
4.根据权利要求3所述的方法,其特征在于,所述确定触发所述中断信号的目标内存分配操作,包括:
通过信号处理函数从所述中断信号中提取发生中断时的现场信息,所述现场信息包括寄存器值;
根据所述寄存器值确定触发中断的指令地址;
从记录的函数地址中匹配所述指令地址,以获得触发所述中断信号的目标动态内存函数,并将所述目标动态内存函数对应的内存分配操作作为目标内存分配操作。
5.根据权利要求3或4所述的方法,其特征在于,所述获取所述目标内存分配操作对应的调用栈,包括:
通过调用unwind库获取所述目标内存分配操作对应的调用栈。
6.根据权利要求3所述的方法,其特征在于,所述内存跟踪进程中设置有各动态内存函数对应的接管函数;所述接管函数用于执行对应的动态内存函数,以及,记录各动态内存函数分配的内存大小、分配内存的时间以及调用栈;
在确定触发所述中断信号的目标内存分配操作之后,所述方法还包括:
采用所述目标内存分配操作对应的接管函数、来执行所述目标内存分配操作对应的目标动态内存函数。
7.根据权利要求3所述的方法,其特征在于,所述内存跟踪具有对应的内存跟踪时间;
在所述记录所述调用栈之后,所述方法还包括:
当所述内存跟踪时间到期时,停止所述内存跟踪;
汇总记录的所述调用栈,生成分析报告,并输出所述分析报告,其中,所述分析报告包括:各调用栈对应的动态内存函数的函数名称及函数地址、分配内存的次数、内存累计大小、释放内存大小、未被释放内存大小、超期未被释放的内存大小。
8.根据权利要求7所述的方法,其特征在于,所述停止所述内存跟踪包括:
将各函数地址对应位置中的所述指定中断指令替换回原有的指令;
解除所述内存跟踪进程与所述被测进程的跟踪关系。
9.根据权利要求1所述的方法,其特征在于,所述监控进程根据所述被测进程的名称,获取所述被测进程在本机的内存资源数据,包括:
所述监控进程根据所述被测进程的名称确定所述被测进程的进程ID;
按照预设时间间隔从文件系统中获取所述进程ID对应的物理内存资源值,作为所述被测进程在本机的内存资源数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百果园技术(新加坡)有限公司,未经百果园技术(新加坡)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110558235.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可脱离的旋转装置
- 下一篇:显示面板和显示装置