进程调用信息的获取方法、装置、电子设备、存储介质制造方法及图纸

技术编号:37584140 阅读:17 留言:0更新日期:2023-05-15 07:57
本公开涉及一种进程调用信息的获取方法、装置、电子设备、存储介质。其中,进程调用信息的获取方法包括:获取位于内核态的目标栈空间的内容信息;根据目标栈空间的内容信息,获取至少一个进程的调用信息。通过本公开提供的实施例可以在基于操作系统开发的应用程序的运行过程中,获取并解析进程的堆栈信息,获取进程的调用信息,后续可以根据进程的调用信息对进程的异常进行定位。进程的异常进行定位。进程的异常进行定位。

【技术实现步骤摘要】
进程调用信息的获取方法、装置、电子设备、存储介质


[0001]本公开涉及操作系统
,尤其涉及一种进程调用信息的获取方法、装置、电子设备、存储介质。

技术介绍

[0002]在基于操作系统(例如,Linux)开发的应用程序的运行过程中,可能会发生在程序的开发、调试过程中没有被检测出来的多种异常情况,例如,应用程序中的某行代码产生了除0操作等。因此,需要通过获取进程的堆栈信息,并对堆栈信息进行解析来获取进程的调用信息,根据进程的调用信息,可以对应程序中发生的异常情况进行定位、确定发生异常的时刻等。
[0003]目前有多种工具可以在用户态下获取并解析进程的堆栈信息,例如,jstack、pstack、gdb、perf等工具。但是由于其自身的资源耗费高,对系统干扰明显,并且只能通过命令行等方式执行,无法自主获取进程的堆栈信息,因此,只能用于应用程序的调试阶段,不能嵌入到应用程序中,从而不能应用于应用程序在线上的运行过程中。并且,有些堆栈跟踪工具(例如,jstack)只适用于基于特定编程语言开发的应用程序,通用性较差。
[0004]因此,如何在基于操作系统开发的应用程序的运行过程中,获取并解析进程的堆栈信息,以获取进程的调用信息,从而可以对进程的异常进行定位,是亟待解决的技术问题。

技术实现思路

[0005]为克服相关技术中存在的问题,本公开提供一种进程调用信息的获取方法、装置、电子设备、存储介质。
[0006]根据本公开实施例的第一方面,提供一种进程调用信息的获取方法,包括:获取位于内核态的目标栈空间的内容信息;根据所述目标栈空间的内容信息,获取至少一个进程的调用信息。
[0007]在一些实施例中,所述目标栈空间的内容信息为未经处理的堆栈数据信息,所述根据所述目标栈空间的内容信息,获取至少一个进程的调用信息,包括:在用户态,对所述目标栈空间的内容信息进行解析;根据解析的结果,得到所述至少一个进程的调用信息。
[0008]在一些实施例中,所述对所述目标栈空间的内容信息进行解析,包括:利用与目标编程语言适配的符号表,对所述目标栈空间的内容信息进行解析。
[0009]在一些实施例中,所述符号表存储于缓存区,所述利用与目标编程语言适配的符号表,对所述目标栈空间的内容信息进行解析,包括:从所述缓存区获取所述符号表;利用所述符号表,对所述目标栈空间的内容信息进行解析。
[0010]在一些实施例中,所述利用所述符号表,对所述目标栈空间的内容信息进行解析包括:对于所述目标栈空间的内容信息中至少一个地址信息,执行如下操作:根据所述地址信息,从所述符号表中获取所述地址信息对应的进程调用信息;其中,所述进程的调用信息
至少包括所述进程的标识信息、所述进程中被调用函数的名称信息、所述进程中被调用代码的行号信息中的一种或者多种的组合。
[0011]在一些实施例中,所述方法还包括:响应于确定出至少一个进程发生延迟调度异常或者系统调用异常,运行于内核态的异常发现模块执行如下操作:获取所述目标栈空间的内容信息;将所述目标栈空间的内容信息发送给运行于用户态的处理进程。
[0012]在一些实施例中,所述方法还包括:在预设采样时间间隔内,运行于内核态的异常发现模块执行如下操作:获取所述目标栈空间的内容信息;将所述目标栈空间的内容信息发送给用户态的处理进程。
[0013]在一些实施例中,所述方法还包括:由用户态的处理进程,指示内核态的异常发现模块开始对所述目标栈空间的内容信息进行采集;或者,由用户态的堆栈信息处理进程,指示内核态的所述异常发现模块停止对所述目标栈空间的内容信息进行采集。
[0014]在一些实施例中,通过以下方式确定所述至少一个进程是否发生延迟调度异常:用户态的处理进程,向所述异常发现模块发送调度时长阈值;所述异常发现模块根据所述调度时长阈值,确定至少一个进程是否存在延迟调度异常。
[0015]在一些实施例中,获取位于内核态的目标栈空间的内容信息,包括:响应于内核处于空闲状态,内核态的处理进程,对所述目标栈空间中的原始数据进行解析,将解析生成的数据信息作为所述目标栈空间的内容信息;用户态的处理进程,从内核态的所述处理进程获取所述目标栈空间的内容信息;或者,响应于内核处于非空闲状态,内核态的处理进程,从所述目标栈空间获取存储于所述目标栈空间的原始数据,将所述原始数据作为所述目标栈空间的内容信息;用户态的处理进程,从内核态的所述处理进程获取所述目标栈空间的内容信息。
[0016]根据本公开实施例的第二方面,提供一种进程调用信息的获取装置,包括第一获取模块,用于获取位于内核态的目标栈空间的内容信息;第二获取模块,用于根据所述目标栈空间的内容信息,获取至少一个进程的调用信息。
[0017]根据本公开实施例的第三方面,提供一种车辆,存储有一组指令集,所述指令集被所述车辆执行,以实现本公开第一方面所提供的进程调用信息的获取方法。
[0018]根据本公开实施例的第四方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本公开第一方面所提供的进程调用信息的获取方法。
[0019]根据本公开实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的进程调用信息的获取方法的步骤。
[0020]本公开的实施例提供的技术方案可以包括以下有益效果:本公开提供的实施例中,获取位于内核态的目标栈空间的内容信息;根据目标栈空间的内容信息,获取至少一个进程的调用信息。从而可以在基于操作系统开发的应用程序的运行过程中,获取并解析进程的堆栈信息,获取进程的调用信息,后续可以根据进程的调用信息对进程的异常进行定位。
[0021]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0022]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0023]图1是根据一示例性实施例示出的一种进程调用信息的获取方法的流程图。
[0024]图2是根据一示例性实施例示出的根据目标栈空间的内容信息,获取至少一个进程的调用信息的方法的流程图。
[0025]图3是根据一示例性实施例示出的利用符号表对目标栈空间的内容信息进行解析方法的流程图。
[0026]图4是根据一示例性实施例示出的异常发现模块将目标栈空间的内容信息发送给运行于用户态的处理进程的方法的流程图。
[0027]图5是根据又一示例性实施例示出的异常发现模块将目标栈空间的内容信息发送给运行于用户态的处理进程的方法的流程图。
[0028]图6是根据一示例性实施例示出的确定所述至少一个进程是否发生延迟调度异常的方法的流程图。
[0029]图7是根据一示例性实施例示出的一种进程调用信息的获取本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种进程调用信息的获取方法,其特征在于,包括:获取位于内核态的目标栈空间的内容信息;根据所述目标栈空间的内容信息,获取至少一个进程的调用信息。2.根据权利要求1所述的进程调用信息的获取方法,其特征在于,所述目标栈空间的内容信息为未经处理的堆栈数据信息,所述根据所述目标栈空间的内容信息,获取至少一个进程的调用信息,包括:在用户态,对所述目标栈空间的内容信息进行解析;根据解析的结果,得到所述至少一个进程的调用信息。3.根据权利要求2所述的进程调用信息的获取方法,其特征在于,所述对所述目标栈空间的内容信息进行解析,包括:利用与目标编程语言适配的符号表,对所述目标栈空间的内容信息进行解析。4.根据权利要求3所述的进程调用信息的获取方法,其特征在于,所述符号表存储于缓存区,所述利用与目标编程语言适配的符号表,对所述目标栈空间的内容信息进行解析,包括:从所述缓存区获取所述符号表;利用所述符号表,对所述目标栈空间的内容信息进行解析。5.根据权利要求4所述的进程调用信息的获取方法,其特征在于,所述利用所述符号表,对所述目标栈空间的内容信息进行解析包括:对于所述目标栈空间的内容信息中至少一个地址信息,执行如下操作:根据所述地址信息,从所述符号表中获取所述地址信息对应的进程调用信息;其中,所述进程的调用信息至少包括所述进程的标识信息、所...

【专利技术属性】
技术研发人员:黄自江杨伟谢宝友
申请(专利权)人:国科础石重庆软件有限公司
类型:发明
国别省市:

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

1