一种收取应用进程内存快照的方法、装置及介质制造方法及图纸

技术编号:36392380 阅读:18 留言:0更新日期:2023-01-18 09:57
本发明专利技术提供的一种收取应用进程内存快照的方法、装置及介质,适用于进程管理技术领域。在业务进程退出后由守护进程发起内存快照指令;通过业务进程调用控制字以保留业务进程的内存;通过守护进程遍历业务进程对应的地址空间内的vma信息;根据vma信息进行内存映射以得到业务进程的地址空间并转存至文件。通过驱动控制字在业务进程退出时保存业务进程的内存,以便于系统回收当前业务进程的地址空间,保存至文件中以实现内存快照。避免现有的内存快照在特定场景(满足一定的触发条件)有效导致的场景受限以及收到内存快照文件不全面导致的调试过程受影响,提高获取内存快照的场景通用性,适用于各种场景,同时提高调试效率。同时提高调试效率。同时提高调试效率。

【技术实现步骤摘要】
一种收取应用进程内存快照的方法、装置及介质


[0001]本专利技术涉及进程管理
,特别是涉及一种收取应用进程内存快照的方法、装置及介质。

技术介绍

[0002]当程序运行的过程出现异常终止或者崩溃状态时,操作系统会将程序当时的内存状态记录并保存至文件中,类似于内存快照(core dump),core dump对于编程人员诊断和调试程序较为重要,对于某些程序错误难以重现(例如指针异常)通过core dump文件可以在线程序出错的情景。
[0003]对于core dump机制仅在特定场景下有效可以重现,例如满足core dump的配置条件、信号触发条件(暂停进程(Stop)、终止进程(Terminate)、终止并发生core dump(core)等)可以收到内存快照。在没有收到内存快照的情景中使得调试过程没有调试依据可供参考;或者收取过程可能会收到的该文件不全面,使其调试过程受到影响等,直接影响调试结果。
[0004]因此,如何在各种场景下收取应用进程内存快照以提高通用性时本领域技术人员亟需要解决的。

技术实现思路

[0005]本专利技术的目的是提供一种收取应用进程内存快照的方法、装置及介质,提高获取内存快照的场景通用性,适用于各种场景,同时提高调试效率。
[0006]为解决上述技术问题,本专利技术提供一种收取应用进程内存快照的方法,包括:
[0007]建立守护进程,并在业务进程退出后由所述守护进程发起内存快照指令;
[0008]通过所述业务进程调用控制字以保留所述业务进程的内存;
[0009]通过所述守护进程遍历所述业务进程对应的地址空间内的vma信息;
[0010]根据所述vma信息进行内存映射以得到所述业务进程的地址空间并转存至文件。
[0011]优选地,所述控制字通过预先设置注册字符设备,并调用所述注册字符设备得到。
[0012]优选地,所述通过所述业务进程调用控制字以保留所述业务进程的内存,包括:
[0013]在所述注册字符设备中调用所述控制字;
[0014]对应地,调用所述控制字,包括:
[0015]调用get_task_mm指令;
[0016]将根据调用的所述get_task_mm指令返回赋予控制句柄。
[0017]优选地,所述通过所述守护进程遍历所述业务进程对应的地址空间内的vma信息,包括:
[0018]遍历所述业务进程的地址空间所属的数据结构内的mmap链表头以得到所述vma信息。
[0019]优选地,在所述通过所述守护进程遍历所述业务进程对应的地址空间内的vma信
息之后,在所述根据所述vma信息进行内存映射之前,还包括:
[0020]保存所述vma信息;
[0021]在所述业务进程退出后,通过所述守护进程调用所述控制字向内核索要vma列表;
[0022]将所述vma列表返回至用户空间。
[0023]优选地,所述根据所述vma信息进行内存映射以得到所述业务进程的地址空间,包括:
[0024]根据所述vma信息以及所述vma列表进行mmap内存映射以得到所述地址空间。
[0025]优选地,在转存至所述文件之后,还包括:
[0026]通过所述注册字符设备发起去使能常驻指令以释放内存。
[0027]为解决上述技术问题,本专利技术还提供一种收取应用进程内存快照的装置,包括:
[0028]建立模块,用于建立守护进程,并在业务进程退出后由所述守护进程发起内存快照指令;
[0029]调用模块,用于通过所述业务进程调用控制字以保留所述业务进程的内存;
[0030]遍历模块,用于通过所述守护进程遍历所述业务进程对应的地址空间内的vma信息;
[0031]映射模块,用于根据所述vma信息进行内存映射以得到所述业务进程的地址空间并转存至文件。
[0032]为解决上述技术问题,本专利技术还提供一种收取应用进程内存快照的装置,包括:
[0033]存储器,用于存储计算机程序;
[0034]处理器,用于执行所述计算机程序时实现如上述所述的收取应用进程内存快照的方法的步骤。
[0035]为解决上述技术问题,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的收取应用进程内存快照的方法的步骤。
[0036]本专利技术提供的一种收取应用进程内存快照的方法,包括:建立守护进程,并在业务进程退出后由守护进程发起内存快照指令;通过业务进程调用控制字以保留业务进程的内存;通过守护进程遍历业务进程对应的地址空间内的vma信息;根据vma信息进行内存映射以得到业务进程的地址空间并转存至文件。该方法通过驱动控制字在业务进程退出时保存业务进程的内存,以便于系统回收当前业务进程的地址空间,保存至文件中以实现内存快照。避免现有的内存快照在特定场景(满足一定的触发条件)有效导致的场景受限以及收到内存快照文件不全面导致的调试过程受影响,提高获取内存快照的场景通用性,适用于各种场景,同时提高调试效率。
[0037]另外,本专利技术还提供了一种收取应用进程内存快照的装置及介质,具有如上述收取应用进程内存快照的方法相同的有益效果。
附图说明
[0038]为了更清楚地说明本专利技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]图1为本专利技术实施例提供的一种收取应用进程内存快照的方法的流程图;
[0040]图2为本专利技术实施例中创建进程地址空间的示意图;
[0041]图3为本专利技术实施例中进程地址空间内数据结构的示意图;
[0042]图4为本专利技术实施例提供的一种收取应用进程内存快照的装置的结构图;
[0043]图5为本专利技术实施例提供的另一种收取应用进程内存快照的装置的结构图。
具体实施方式
[0044]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本专利技术保护范围。
[0045]本专利技术的核心是提供一种收取应用进程内存快照的方法、装置及介质,提高获取内存快照的场景通用性,适用于各种场景,同时提高调试效率。
[0046]为了使本
的人员更好地理解本专利技术方案,下面结合附图和具体实施方式对本专利技术作进一步的详细说明。
[0047]需要说明的是,在现有的应用程序运行过程中异常终止或崩溃时发生内存快照,但并不是所有的应用程序运行过程中会发生其内存快照,例如使用kill

9指令对一个进程进行指令执行,其该进程由于未本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种收取应用进程内存快照的方法,其特征在于,包括:建立守护进程,并在业务进程退出后由所述守护进程发起内存快照指令;通过所述业务进程调用控制字以保留所述业务进程的内存;通过所述守护进程遍历所述业务进程对应的地址空间内的vma信息;根据所述vma信息进行内存映射以得到所述业务进程的地址空间并转存至文件。2.根据权利要求1所述的收取应用进程内存快照的方法,其特征在于,所述控制字通过预先设置注册字符设备,并调用所述注册字符设备得到。3.根据权利要求2所述的收取应用进程内存快照的方法,其特征在于,所述通过所述业务进程调用控制字以保留所述业务进程的内存,包括:在所述注册字符设备中调用所述控制字;对应地,调用所述控制字,包括:调用get_task_mm指令;将根据调用的所述get_task_mm指令返回赋予控制句柄。4.根据权利要求3所述的收取应用进程内存快照的方法,其特征在于,所述通过所述守护进程遍历所述业务进程对应的地址空间内的vma信息,包括:遍历所述业务进程的地址空间所属的数据结构内的mmap链表头以得到所述vma信息。5.根据权利要求4所述的收取应用进程内存快照的方法,其特征在于,在所述通过所述守护进程遍历所述业务进程对应的地址空间内的vma信息之后,在所述根据所述vma信息进行内存映射之前,还包括:保存所述vma信息;在所述业务进程退出后,通过所述守护进程调...

【专利技术属性】
技术研发人员:李辉孙明刚刘清林
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:

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

1