内存泄漏监控方法、装置及电子设备制造方法及图纸

技术编号:23557932 阅读:13 留言:0更新日期:2020-03-25 03:37
本发明专利技术实施例提供了一种内存泄漏监控方法、装置及电子设备,所述方法包括:获取目标程序运行过程中的内存分配信息以及内存释放信息;若内存分配信息与内存释放信息不一致,确定存在内存泄漏;获取目标程序对应的函数调用栈信息;根据函数调用栈信息对目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数。如此,可通过监控程序运行时产生的内存分配信息以及内存释放信息,对程序中的内存泄漏的代码进行定位,从而提高程序运行的稳定性。

Memory leakage monitoring methods, devices and electronic equipment

【技术实现步骤摘要】
内存泄漏监控方法、装置及电子设备
本专利技术涉及计算机
,具体涉及一种内存泄漏监控方法、装置及电子设备。
技术介绍
电子设备中的软件程序可能存在内存泄漏的问题,会导致程序运行不稳定,最严重的情况会导致程序崩溃。而定位内存泄漏却不是一件容易的事情。程序代码逻辑越复杂,内存泄漏的地方就可能越隐蔽。当发生内存泄漏,会影响软件运行的稳定性。
技术实现思路
本专利技术实施例提供了一种内存泄漏监控方法、装置及电子设备,可对程序中的内存泄漏的代码进行定位,从而提高程序运行的稳定性。本专利技术实施例第一方面提供了一种内存泄漏监控方法,应用于电子设备,包括:获取目标程序运行过程中的内存分配信息以及内存释放信息;若所述内存分配信息与所述内存释放信息不一致,确定存在内存泄漏;获取所述目标程序对应的函数调用栈信息;根据所述函数调用栈信息对所述目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数。结合本专利技术实施例的第一方面,在第一方面的第一种可能的实施方式中,所述内存分配信息包括多个分配内存地址以及多个分配内存大小,每一所述分配内存地址对应一个所述分配内存大小,所述内存释放信息包括多个释放内存地址以及多个释放内存大小,每一所述释放内存地址对应一个所述释放内存大小,所述方法还包括:若所述多个分配内存地址与所述多个释放内存地址一一对应,将所述多个分配内存地址中每一分配内存地址的分配内存大小与所述每一分配内存地址对应的释放内存地址的释放内存大小进行对比;r>若所述多个分配内存地址中所述每一分配内存地址的分配内存大小与进行对比的释放内存大小一致,确定所述内存分配信息与所述内存释放信息一致;否则,确定所述内存分配信息与所述内存释放信息不一致。结合本专利技术实施例的第一方面或第一方面的第一种可能实施方式,在第一方面的第二种可能的实施方式中,所述函数调用栈信息还包括多个调用栈标识,每一所述调用栈标识对应一个函数调用链包括的至少一个调用函数对应的至少一个函数地址,每一所述调用函数对应一个函数地址,所述根据所述函数调用栈信息对所述目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数,包括:根据预设的内存地址与调用栈标识之间的映射关系确定所述目标程序中存在内存泄漏的目标分配内存地址或目标释放内存地址对应的目标调用栈标识;根据所述目标调用栈标识查找所述函数调用栈信息,得到与所述目标调用栈标识对应的至少一个目标函数地址;确定所述至少一个目标函数地址中每一目标函数地址对应的目标函数,得到至少一个目标函数。结合本专利技术实施例的第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述确定存在内存泄漏的分配内存地址或释放内存地址对应的目标调用栈标识,包括:根据预设的分配内存地址和调用栈标识之间的第一映射关系确定与所述目标分配内存地址对应的目标调用栈标识;或者,根据预设的释放内存地址和调用栈标识之间的第二映射关系确定与所述目标释放内存地址对应的目标调用栈标识。结合本专利技术实施例的第一方面的第二种可能的实施方式,在第一方面的第四种可能的实施方式中,所述方法还包括:在所述目标程序运行过程中,监控所述目标程序中的预设函数,所述预设函数为所述多个函数中的一个函数;在所述预设函数被调用时,记录所述目标程序的内存分配信息和内存释放信息;根据所述内存分配信息和所述内存释放信息生成目标记录文件;所述获取目标程序运行过程中的内存分配信息以及内存释放信息,包括:读取所述目标记录文件,得到所述内存分配信息以及所述内存释放信息。结合本专利技术实施例的第一方面或第一方面的第一种可能实施方式,在第一方面的第五种可能的实施方式中,所述方法还包括:在所述目标程序运行过程中,监控所述目标程序中的预设函数,所述预设函数为所述多个函数中的一个函数;在所述预设函数被调用时,记录所述目标程序的内存分配信息和内存释放信息;根据所述内存分配信息和所述内存释放信息生成目标记录文件;所述获取目标程序运行过程中的内存分配信息以及内存释放信息,包括:读取所述目标记录文件,得到所述内存分配信息以及所述内存释放信息。本专利技术实施例第二方面提供了一种内存泄漏监控装置,包括:获取单元,用于获取目标程序运行过程中的内存分配信息以及内存释放信息;确定单元,用于若所述内存分配信息与所述内存释放信息不一致,确定存在内存泄漏;所述获取单元,还用于获取所述目标程序对应的函数调用栈信息;定位单元,用于根据所述函数调用栈信息对所述目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数。结合本专利技术实施例的第二方面,在第二方面的第一种可能的实施方式中,所述函数调用栈信息还包括多个调用栈标识,每一所述调用栈标识对应一个函数调用链包括的至少一个调用函数对应的至少一个函数地址,每一所述调用函数对应一个函数地址,所述定位单元具体用于:根据预设的内存地址与调用栈标识之间的映射关系确定所述目标程序中存在内存泄漏的目标分配内存地址或目标释放内存地址对应的目标调用栈标识;根据所述目标调用栈标识查找所述函数调用栈信息,得到与所述目标调用栈标识对应的至少一个目标函数地址;确定所述至少一个目标函数地址中每一目标函数地址对应的目标函数,得到至少一个目标函数。结合本专利技术实施例的第二方面或第二方面的第一种可能的实施方式中,在第二方面的第二种可能的实施方式中,在所述确定存在内存泄漏的分配内存地址或释放内存地址对应的目标调用栈标识方面,所述定位单元具体用于:根据预设的分配内存地址和调用栈标识之间的第一映射关系确定与所述目标分配内存地址对应的目标调用栈标识;或者,根据预设的释放内存地址和调用栈标识之间的第二映射关系确定与所述目标释放内存地址对应的目标调用栈标识。结合本专利技术实施例第二方面的第二种可能的实施方式中,在第二方面的第三种可能的实施方式中,所述内存分配信息包括多个分配内存地址以及多个分配内存大小,每一所述分配内存地址对应一个所述分配内存大小,所述内存释放信息包括多个释放内存地址以及多个释放内存大小,每一所述释放内存地址对应一个所述释放内存大小,所述确定单元还用于:若所述多个分配内存地址与所述多个释放内存地址一一对应,将所述多个分配内存地址中每一分配内存地址的分配内存大小与所述每一分配内存地址对应的释放内存地址的释放内存大小进行对比;若所述多个分配内存地址中所述每一分配内存地址的分配内存大小与进行对比的释放内存大小一致,确定所述内存分配信息与所述内存释放信息一致;否则,确定所述内存分配信息与所述内存释放信息不一致。结合本专利技术实施例的第二方面的第二种可能的实施方式,在第二方面的第四种可能的实施方式中,所述获取单元,还用于:在所述目标程序运行过程中,监控所述目标程序中的预设函数,所述预设函数为所述多个函数中的一个函数;在所述预设函数被调用时,记录所述目标程本文档来自技高网...

【技术保护点】
1.一种内存泄漏监控方法,其特征在于,所述方法包括:/n获取目标程序运行过程中的内存分配信息以及内存释放信息;/n若所述内存分配信息与所述内存释放信息不一致,确定存在内存泄漏;/n获取所述目标程序对应的函数调用栈信息;/n根据所述函数调用栈信息对所述目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数。/n

【技术特征摘要】
1.一种内存泄漏监控方法,其特征在于,所述方法包括:
获取目标程序运行过程中的内存分配信息以及内存释放信息;
若所述内存分配信息与所述内存释放信息不一致,确定存在内存泄漏;
获取所述目标程序对应的函数调用栈信息;
根据所述函数调用栈信息对所述目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数。


2.根据权利要求1所述的方法,其特征在于,所述内存分配信息包括多个分配内存地址以及多个分配内存大小,每一所述分配内存地址对应一个所述分配内存大小,所述内存释放信息包括多个释放内存地址以及多个释放内存大小,每一所述释放内存地址对应一个所述释放内存大小,所述方法还包括:
若所述多个分配内存地址与所述多个释放内存地址一一对应,将所述多个分配内存地址中每一分配内存地址的分配内存大小与所述每一分配内存地址对应的释放内存地址的释放内存大小进行对比;
若所述多个分配内存地址中所述每一分配内存地址的分配内存大小与进行对比的释放内存大小一致,确定所述内存分配信息与所述内存释放信息一致;否则,确定所述内存分配信息与所述内存释放信息不一致。


3.根据权利要求1或2所述的方法,其特征在于,所述函数调用栈信息还包括多个调用栈标识,每一所述调用栈标识对应一个函数调用链包括的至少一个调用函数对应的至少一个函数地址,每一所述调用函数对应一个函数地址,所述根据所述函数调用栈信息对所述目标程序中存在内存泄漏的位置进行定位,得到至少一个目标函数,包括:
根据预设的内存地址与调用栈标识之间的映射关系确定所述目标程序中存在内存泄漏的目标分配内存地址或目标释放内存地址对应的目标调用栈标识;
根据所述目标调用栈标识查找所述函数调用栈信息,得到与所述目标调用栈标识对应的至少一个目标函数地址;
确定所述至少一个目标函数地址中每一目标函数地址对应的目标函数,得到至少一个目标函数。


4.根据权利要求3所述的方法,其特征在于,所述确定存在内存泄漏的分配内存地址或释放内存地址对应的目标调用栈标识,包括:
根据预设的分配内存地址和调用栈标识之间的第一映射关系确定与所述目标分配内存地址对应的目标调用栈标识;或者,
根据预设的释放内存地址和调用栈标识之间的第二映射关系确定与所述目标释放内存地址对应的目标调用栈标识。


5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
在所述目标程序运行过程中,监控所述目标程序中的预设函数,所述预设函数为所述多个函数中的一个函数;
在所述预设函数被调用时,记录所述目标...

【专利技术属性】
技术研发人员:以志
申请(专利权)人:珠海豹趣科技有限公司
类型:发明
国别省市:广东;44

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

1