用于内存追溯的方法及装置、系统、电子设备、存储介质制造方法及图纸

技术编号:37277127 阅读:10 留言:0更新日期:2023-04-20 23:44
本申请涉及操作系统技术领域,公开一种用于内存追溯的方法,包括:操作系统在接收到内存申请请求的情况下,获取寄存器保存的第一返回地址;其中,第一返回地址为调用内存申请的函数的返回地址;操作系统按内存申请请求进行内存分配,并记录本次内存申请请求的内存分配信息;其中,内存分配信息包括第一返回地址;第一返回地址被用于对调用内存申请的函数进行追溯。在需要内存追溯的情况下,通过调用操作系统记录的第一返回地址可以对调用内存申请的函数进行追溯。这样,实现了对应用程序自身业务代码、第三方代码的内存申请的追溯,扩大了内存追溯范围。本申请还公开一种用于内存追溯的装置及系统、电子设备、存储介质。存储介质。存储介质。

【技术实现步骤摘要】
用于内存追溯的方法及装置、系统、电子设备、存储介质


[0001]本申请涉及操作系统
,例如涉及一种用于内存追溯的方法及装置、系统、电子设备、存储介质。

技术介绍

[0002]内存泄漏,是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。在软件开发测试过程中,需要对内存进行追溯检查,检查是否存在内存泄露或内存申请不合理的情况,及时发现程序中存在的问题,并对代码进行优化。
[0003]相关技术公开了一种内存追溯的方法,包括:在应用层将操作系统内存申请函数进行宏定义,同时传入行号以及调用函数名。应用程序将内存申请的函数由malloc改为libc_malloc,在内存申请的时候记录调用内存申请/释放的函数及位置等信息,便于追溯。在需要内存追溯的情况下,通过打印内存记录链表中的数据查看内存的申请者、申请大小、申请时间等。分析链表可以得出内存不合理的使用,从而优化代码,合理利用内存。图1是相关技术提供的一个的内存追溯流程的示意图。如图1所示,应用程序代码包括自身业务代码和第三方代码,在代码测试过程中,测试人员只能在应用层自身业务代码与操作系统层之间设置内存追溯单元,内存追溯单元被配置为在自身业务代码内存申请/释放的情况下,记录调用内存申请/释放的函数及位置等信息,然后操作系统的内存管理单元对内存进行申请/释放。在第三方代码内存申请/释放的情况下,直接通过操作系统的内存管理单元对内存进行申请/释放。
[0004]在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
[0005]该技术虽然能够实现追溯内存申请的调用函数及位置等信息。但是相关技术是在应用服务层进行追溯,只能对应用程序自身业务代码内存申请进行记录和追溯,由于第三方代码未提供追溯接口,无法对第三方代码的内存申请进行记录和追溯,限制了内存追溯的范围。
[0006]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0007]为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
[0008]本公开实施例提供了一种用于内存追溯的方法及装置、系统、电子设备、存储介质,能够对应用程序自身业务代码、第三方代码的内存申请进行追溯,扩大内存追溯范围。
[0009]在一些实施例中,用于内存追溯的方法,包括:操作系统在接收到内存申请请求的情况下,获取寄存器保存的第一返回地址;其中,第一返回地址为调用内存申请的函数的返回地址;操作系统按内存申请请求进行内存分配,并记录本次内存申请请求的内存分配信息;其中,内存分配信息包括第一返回地址;第一返回地址被用于对调用内存申请的函数进行追溯。
[0010]可选地,内存分配信息还包括:内存申请大小、分配的内存的信息和内存申请时间。
[0011]可选地,分配的内存的信息包括:分配的内存的首地址、分配的内存的偏移量和第二返回地址;其中,第二返回地址为分配的内存的返回地址。
[0012]可选地,内存分配信息还包括:中央处理器CPU架构信息。
[0013]可选地,调用内存申请的函数为直接调用内存申请的函数;或者,在通过多个函数间接调用内存申请的情况下,调用内存申请的函数为初始调用函数。
[0014]可选地,上述方法还包括:操作系统在接收到获取内存分配信息的请求的情况下,反馈所有内存分配信息,以对调用内存申请的函数进行追溯。
[0015]在一些实施例中,用于内存追溯的方法,包括:发送获取内存分配信息的请求;接收所有内存分配信息;其中,内存分配信息包括第一返回地址;第一返回地址为调用内存申请的函数的返回地址;调用函数地址解析工具对第一返回地址进行解析,获得调用内存申请的函数的信息。
[0016]可选地,内存分配信息还包括:内存申请大小、分配的内存的信息和内存申请时间。
[0017]可选地,分配的内存的信息包括:分配的内存的首地址、分配的内存的偏移量和第二返回地址;其中,第二返回地址为分配的内存的返回地址。
[0018]可选地,内存分配信息还包括:中央处理器CPU架构信息。
[0019]可选地,调用内存申请的函数为直接调用内存申请的函数;或者,在通过多个函数间接调用内存申请的情况下,调用内存申请的函数为初始调用函数。
[0020]可选地,调用函数地址解析工具对第一返回地址进行解析,包括:根据预设的映射关系,确定与中央处理器CPU架构信息对应的函数地址解析工具;调用对应的函数地址解析工具对第一返回地址进行解析。
[0021]可选地,在调用函数地址解析工具对第一返回地址进行解析前,上述方法还包括:按预设条件对内存分配信息进行筛选,获得筛选后的内存分配信息。
[0022]可选地,预设条件包括:内存申请大小大于或等于预设的内存申请大小阈值;和/或,内存申请大小小于预设的内存申请大小阈值;和/或,内存申请时间在预设的时间段内。
[0023]在一些实施例中,用于内存追溯的装置包括处理器和存储有程序指令的存储器,处理器被配置为在运行程序指令时,执行上述的用于内存追溯的方法。
[0024]在一些实施例中,用于内存追溯的系统包括:寄存器,设置于中央处理器,被配置为在操作系统接收到内存申请请求的情况下,保存第一返回地址;其中,第一返回地址为调用内存申请的函数的返回地址;和,数据存储模块,安装有操作系统,被配置为在操作系统接收到内存申请请求的情况下,按内存申请请求进行内存分配,并记录本次内存申请请求的内存分配信息;内存分配信息包括第一返回地址;第一返回地址被用于对调用内存申请
的函数进行追溯。
[0025]可选地,调用内存申请的函数为直接调用内存申请的函数;或者,在通过多个函数间接调用内存申请的情况下,调用内存申请的函数为初始调用函数。
[0026]在一些实施例中,电子设备包括:电子设备本体;和,处理器,设置于电子设备本体内,被配置为在运行程序指令时,执行上述的用于内存追溯的方法。
[0027]在一些实施例中,存储介质,存储有程序指令,程序指令在运行时,执行上述的用于内存追溯的方法。
[0028]本公开实施例提供的用于内存追溯的方法及装置、系统、电子设备、存储介质,可以实现以下技术效果:
[0029]无论应用程序自身业务代码还是第三方代码,在发送内存申请请求的情况下,操作系统均会获取调用内存申请的函数的返回地址并进行保存。在需要内存追溯的情况下,通过调用内存申请的函数的返回地址可以对调用内存申请的函数进行追溯。这样,实现了对应用程序自身业务代码、第三本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于内存追溯的方法,其特征在于,包括:操作系统在接收到内存申请请求的情况下,获取寄存器保存的第一返回地址;其中,第一返回地址为调用内存申请的函数的返回地址;操作系统按内存申请请求进行内存分配,并记录本次内存申请请求的内存分配信息;其中,所述内存分配信息包括所述第一返回地址;所述第一返回地址被用于对调用内存申请的函数进行追溯。2.根据权利要求1所述的方法,其特征在于,所述内存分配信息还包括:内存申请大小、分配的内存的信息和内存申请时间。3.根据权利要求2所述的方法,其特征在于,所述分配的内存的信息包括:分配的内存的首地址、分配的内存的偏移量和第二返回地址;其中,第二返回地址为分配的内存的返回地址。4.根据权利要求1所述的方法,其特征在于,所述内存分配信息还包括:中央处理器CPU架构信息。5.根据权利要求1所述的方法,其特征在于,所述调用内存申请的函数为直接调用内存申请的函数;或者,在通过多个函数间接调用内存申请的情况下,所述调用内存申请的函数为初始调用函数。6.根据权利要求1至5任一项所述的方法,其特征在于,还包括:操作系统在接收到获取内存分配信息的请求的情况下,反馈所有内存分配信息,以对调用内存申请的函数进行追溯。7.一种用于内存追溯的方法,其特征在于,包括:发送获取内存分配信息的请求;接收所有内存分配信息;其中,所述内存分配信息包括第一返回地址;第一返回地址为调用内存申请的函数的返回地址;调用函数地址解析工具对所述第一返回地址进行...

【专利技术属性】
技术研发人员:王凯帆
申请(专利权)人:青岛海尔科技有限公司海尔智家股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1