一种程序运行状态的获取方法、装置、设备及存储介质与流程

文档序号:23723378发布日期:2021-01-26 14:05阅读:66来源:国知局
[0001]本发明涉及计算机
技术领域
:,特别涉及一种程序运行状态的获取方法、装置、设备及计算机可读存储介质。
背景技术
::[0002]现有技术中,在生产环境下,为了能掌握程序的运行状态,在出现问题时能快速定位问题,常规的做法是将程序状态信息记录在日志文件中,以便在出现问题时能够通过日志文件来定位。但是在存储系统这样的大规模程序中,容易产生大量日志,难以定位到具体的问题原因;更严重的是,像存储系统这样对io(inputoutput,输入输出)效率极为敏感的程序,写日志会造成不可容忍的延迟。[0003]因此,如何能够在获取程序的运行状态的过程中,避免日志文件的使用,从而避免日志泛滥的问题,减少程序的延迟情况,是现今急需解决的问题。技术实现要素:[0004]本发明的目的是提供一种程序运行状态的获取方法、装置、设备及计算机可读存储介质,以利用内存镜像文件获取程序的运行状态,从而避免日志泛滥的问题,减少程序的延迟情况。[0005]为解决上述技术问题,本发明提供一种程序运行状态的获取方法,包括:[0006]在目标进程运行过程中,获取所述目标进程对应的内存镜像文件;[0007]根据所述内存镜像文件和所述目标进程的预设标记文件,确定所述预设标记文件中每个预设标记各自对应的镜像内存内容;其中,所述预设标记文件包括每个所述预设标记各自对应的需标记数据信息和标记名称信息。[0008]可选的,所述获取所述目标进程对应的内存镜像文件,包括:[0009]生成所述目标进程的子进程,并使所述子进程主动异常退出,得到所述子进程对应的内存镜像文件。[0010]可选的,所述获取所述目标进程对应的内存镜像文件,包括:[0011]接收预设状态查询指令后,获取所述目标进程对应的内存镜像文件。[0012]可选的,所述获取所述目标进程对应的内存镜像文件,包括:[0013]按预设时间间隔获取所述目标进程对应的内存镜像文件。[0014]可选的,所述根据所述预设标记文件和所述内存镜像文件,确定每个所述预设标记各自对应的镜像内存内容之后,还包括:[0015]接收状态显示指令;其中,所述状态显示指令包括目标标记信息;[0016]在交互界面显示目标标记对应的镜像内存内容;其中,所述目标标记为所述目标标记信息对应的预设标记。[0017]可选的,所述根据所述内存镜像文件和所述目标进程的预设标记文件,确定所述预设标记文件中每个预设标记各自对应的镜像内存内容,包括:[0018]根据所述预设标记文件、所述目标进程的符号表和所述内存镜像文件,确定每个所述预设标记各自对应的镜像内存内容。[0019]可选的,所述根据所述预设标记文件、所述目标进程的符号表和所述内存镜像文件,确定每个所述预设标记各自对应的镜像内存内容,包括:[0020]根据所述预设标记文件和所述符号表,确定第一对应关系;其中,所述第一对应关系为每个预设标记与内存地址的对应关系;[0021]根据所述内存镜像文件的文件格式,确定第二对应关系;其中,所述第二对应关系为所述内存地址与所述镜像内存内容的对应关系;[0022]根据所述第一对应关系和所述第二对应关系,确定每个所述预设标记各自对应的镜像内存内容。[0023]本发明还提供了一种程序运行状态的获取装置,包括:[0024]获取模块,用于在目标进程运行过程中,获取所述目标进程对应的内存镜像文件;[0025]确定模块,用于根据所述内存镜像文件和所述目标进程的预设标记文件,确定所述预设标记文件中每个预设标记各自对应的镜像内存内容;其中,所述预设标记文件包括每个所述预设标记各自对应的需标记数据信息和标记名称信息。[0026]本发明还提供了一种程序运行状态的获取设备,包括:[0027]存储器,用于存储计算机程序;[0028]处理器,用于执行所述计算机程序时实现如上述所述的程序运行状态的获取方法的步骤。[0029]本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的程序运行状态的获取方法的步骤。[0030]本发明所提供的一种程序运行状态的获取方法,包括:在目标进程运行过程中,获取目标进程对应的内存镜像文件;根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容;其中,预设标记文件包括每个预设标记各自对应的需标记数据信息和标记名称信息;[0031]可见,本发明通过根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容,能够得到内存镜像文件中需要关注的内存信息,从而确定目标进程的运行状态,实现在不使用日志文件的情况下的程序运行状态获取,能够避免日志泛滥的问题,减少程序的延迟情况。此外,本发明还提供了一种程序运行状态的获取装置、设备及计算机可读存储介质,同样具有上述有益效果。附图说明[0032]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0033]图1为本发明实施例所提供的一种程序运行状态的获取方法的流程图;[0034]图2为本发明实施例所提供的一种程序运行状态的获取装置的结构框图;[0035]图3为本发明实施例所提供的一种程序运行状态的获取设备的结构示意图。具体实施方式[0036]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0037]请参考图1,图1为本发明实施例所提供的一种程序运行状态的获取方法的流程图。该方法可以包括:[0038]步骤101:在目标进程运行过程中,获取目标进程对应的内存镜像文件。[0039]其中,本步骤中的目标进程可以为需要检测程序运行状态的进程(即程序)。本步骤中处理器获取的目标进程对应的内存镜像文件可以为目标进程在要检测程序运行状态的时刻(即检测时刻)的内存内容的镜像文件,也就是说,内存镜像文件中收集有目标进程在检测时刻的内存信息。[0040]具体的,对于本步骤中处理器在运行目标进程的过程中,获取目标进程对应的内存镜像文件的具体过程,可以由设计人员根据实用场景和用户需求自行设置,如为了减少内存镜像文件获取对目标进程的执行效率的影响,本步骤中处理器可以在需要获取存镜像文件时,产生目标进程的子进程,并且子进程可以主动产生异常信号退出从而生成内存镜像文件,因为子进程的内存内容与父进程(目标进程)完全相同,所以子进程主动退出产生的内存镜像文件(即子进程对应的内存镜像文件)包含目标进程在该时刻的内存内容;也就是说,本步骤中处理器可以生成目标进程的子进程,并使子进程主动异常退出,得到子进程对应的内存镜像文件;例如处理器在收到特定消息(如预设状态查询指令)后,可以利用消息处理函数生成目标进程的子进程并主动异常退出,从而得到目标进程对应的内存镜像文件。[0041]可以理解的是,对于本步骤中处理器在运行目标进程的过程中,获取目标进程对应的内存镜像文件的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如处理器可以在接收目标进程对应的预设状态查询指令后,获取目标进程对应的内存镜像文件;即用户在需要检测目标进程的程序运行状态时,可以操作人机交互设备触发目标进程对应的预设状态查询指令,使处理器可以接收该预设状态查询指令。处理器也可以按预设时间间隔获取目标进程对应的内存镜像文件。只要处理器可以在目标进程运行过程中,获取目标进程对应的内存镜像文件,本实施例对此不做任何限制。[0042]具体的,对于本步骤中的内存镜像文件的具体文件格式,可以由设计人员自行设置,如内存镜像文件可以为elf(executableandlinkableformat,可执行可链接文件格式)格式的文件;也可以为其他格式的文件,只要内存镜像文件可以包含镜像的目标进程在检测时刻的内存内容,本实施例对此不做任何限制。[0043]步骤102:根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容;其中,预设标记文件包括每个预设标记各自对应的需标记数据信息和标记名称信息。[0044]需要说明的是,本步骤中目标进程的预设标记文件可以为预先设置的记录有目标进程在运行过程中需要关注的内存内容(即运行状态数据)的信息(即需标记数据信息)的文件,从而使处理器可以利用预设标记文件确定内存镜像文件中需要关注的镜像内存内容,即预设标记文件中每个预设标记各自对应的镜像内存内容。本步骤中的预设标记可以为需要关注的内存内容对应的类别信息。[0045]对应的,本步骤之前还可以包括处理器获取目标进程的预设标记文件的步骤;例如在目标进程的编码阶段设计人员或用户可以将需要关注的运行状态数据记录到标记文件中,使得处理器可以运行内存镜像分析工具读取并解析预设标记文件,确定需要关注的内存内容。[0046]具体的,对于本实施例中预设标记文件的具体内容,可以由设计人员自行设置,如预设标记文件可以包括每个预设标记各自对应的需标记数据信息(如数据的大小)和标记名称信息;预设标记文件还可以包括每个预设标记各自对应的显示格式信息,以使预设标记文件的内容可以在交互界面以显示格式信息对应的格式显示。只要处理器可以利用预设标记文件,确定内存镜像文件中每个预设标记各自对应的镜像内存内容,本实施例对此不做任何限制。[0047]相应的,本实施例还可以包括在交互界面显示预设标记文件中的内容的步骤,例如处理器可以根据接收的标记显示指令,在交互界面显示预设标记文件中的内容。[0048]可以理解的是,本步骤的目的可以为处理器利用内存镜像文件和目标进程的预设标记文件,确定内存镜像文件中的目标镜像内存内容,即每个预设标记各自对应的镜像内存内容,从而得到目标进程在检测时刻的内存内容中需要关注的内存内容(即运行状态数据),实现程序运行状态的监控,方便后续对问题的定位。[0049]具体的,对于本步骤中处理器根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如处理器可以根据预设标记文件、目标进程的符号表和内存镜像文件,确定每个预设标记各自对应的镜像内存内容;例如处理器可以运行内存镜像分析工具先读取并解析预设标记文件,再读取目标进程的符号表,建立预设标记与内存地址的关联;之后按照内存镜像文件的文件格式解析内存镜像文件,建立起内存地址与内存镜像文件中镜像内存内容的关联,从而得到预设标记与镜像内存内容的关联;也就是说,本步骤可以包括根据预设标记文件和符号表,确定第一对应关系;根据内存镜像文件的文件格式,确定第二对应关系;根据第一对应关系和第二对应关系,确定每个预设标记各自对应的镜像内存内容;其中,第一对应关系为每个预设标记与内存地址的对应关系,第二对应关系为内存地址与镜像内存内容的对应关系。相应的,处理器在目标进程运行过程中,根据预设标记文件在内存内容中标记对应的预设标记时,处理器可以预设标记文件,识别出内存镜像文件中各预设标记所对应的镜像内存内容;即预设标记可以为具体的标识(如编号id),相应的,预设标记文件中可以包括各预设标记的具体标识内容。只要处理器可以根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容,本实施例对此不做任何限制。[0050]需要说明的是,本实施例是以一个目标进程的一个检测时刻的程序运行状态获取为例进行的展示,对于该目标进程在其他检测时刻的程序运行状态获取,以及其它目标进程在任意检测时刻的程序运行状态获取,可以采用与本实施例所提供的方法相同或相似的方式实现,本实施例对此不做任何限制。[0051]具体的,本步骤之后还可以包括处理器根据接收的状态显示指令,在交互界面显示目标标记对应的镜像内存内容;其中,状态显示指令包括目标标记信息,目标标记为目标标记信息对应的预设标记。例如目标标记信息为标记名称时,处理器可以运行内存镜像分析工具根据状态显示指令中标记名称关联的内存地址,查找并读取内存镜像文件中相应的镜像内存内容,并在交互界面中展示出来。[0052]本实施例中,本发明实施例通过根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容,能够得到内存镜像文件中需要关注的内存信息,从而确定目标进程的运行状态,实现在不使用日志文件的情况下的程序运行状态获取,能够避免日志泛滥的问题,减少程序的延迟情况。[0053]请参考图2,图2为本发明实施例所提供的一种程序运行状态的获取装置的结构框图。该装置可以包括:[0054]获取模块10,用于在目标进程运行过程中,获取目标进程对应的内存镜像文件;[0055]确定模块20,用于根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容;其中,预设标记文件包括每个预设标记各自对应的需标记数据信息和标记名称信息。[0056]可选的,获取模块10,可以具体用于生成目标进程的子进程,并使子进程主动异常退出,得到子进程对应的内存镜像文件。[0057]可选的,获取模块10,可以包括:[0058]控制获取子模块,用于接收预设状态查询指令后,获取目标进程对应的内存镜像文件。[0059]可选的,获取模块10,可以包括:[0060]间隔获取子模块,用于按预设时间间隔获取目标进程对应的内存镜像文件。[0061]可选的,该装置还可以包括:[0062]接收模块,用于接收状态显示指令;其中,状态显示指令包括目标标记信息;[0063]显示模块,用于在交互界面显示目标标记对应的镜像内存内容;其中,目标标记为目标标记信息对应的预设标记。[0064]可选的,确定模块20,可以具体用于根据预设标记文件、目标进程的符号表和内存镜像文件,确定每个预设标记各自对应的镜像内存内容。[0065]可选的,确定模块20,可以包括:[0066]第一确定子模块,用于根据预设标记文件和符号表,确定第一对应关系;其中,第一对应关系为每个预设标记与内存地址的对应关系;[0067]第二确定子模块,用于根据内存镜像文件的文件格式,确定第二对应关系;其中,第二对应关系为内存地址与镜像内存内容的对应关系;[0068]第三确定子模块,用于根据第一对应关系和第二对应关系,确定每个预设标记各自对应的镜像内存内容。[0069]本实施例中,本发明实施例通过确定模块20根据内存镜像文件和目标进程的预设标记文件,确定预设标记文件中每个预设标记各自对应的镜像内存内容,能够得到内存镜像文件中需要关注的内存信息,从而确定目标进程的运行状态,实现在不使用日志文件的情况下的程序运行状态获取,能够避免日志泛滥的问题,减少程序的延迟情况。[0070]请参考图3,图3为本发明实施例所提供的一种程序运行状态的获取设备的结构示意图。该设备1可以包括:[0071]存储器11,用于存储计算机程序;处理器12,用于执行该计算机程序时实现如上述实施例所提供的程序运行状态的获取方法的步骤。[0072]设备1可以具体为存储系统的服务器,设备1可以包括存储器11、处理器12和总线13。[0073]其中,存储器11至少包括一种类型的可读存储介质,该可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是设备1的内部存储单元。存储器11在另一些实施例中也可以是设备1的外部存储设备,例如服务器上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括设备1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于设备1的应用软件及各类数据,例如:执行程序运行状态的获取方法的程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。[0074]处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行程序运行状态的获取方法的程序的代码等。[0075]该总线13可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0076]进一步地,设备还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该设备1与其他电子设备之间建立通信连接。[0077]可选地,该设备1还可以包括用户接口15,用户接口15可以包括显示器(display)、输入单元比如按键,可选的用户接口15还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备1中处理的信息以及用于显示可视化的用户界面。[0078]图3仅示出了具有组件11-15的设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。[0079]此外,本发明实施例还公开了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如上述实施例所提供的程序运行状态的获取方法的步骤。[0080]其中,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0081]说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。[0082]以上对本发明所提供的一种程序运行状态的获取方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1