一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

脚本文件监测方法及装置与流程

2022-06-05 10:02:41 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种脚本文件监测方法。本技术同时涉及一种脚本文件监测装置、一种计算设备,以及一种计算机可读存储介质。


背景技术:

2.随着互联网技术的发展,各种各样的应用程序越来越常见,与之相伴的是应用程序功能的更新迭代速度不断加快,导致人们持续加深为应用程序提供灵活扩展和定制功能的重视,lua语言在这种情况下被开发出来,并很快的展示出自身的简洁、快速的特点,从而被广泛应用,现有技术中,lua语言自带debug包,可以实现lua语言脚本运行过程中运行信息的查看,所以开发者们基于debug包制作了lua语言脚本的性能监测程序,然而,执行这种性能监测程序所需的计算资源开销过大,并且运行速度也过慢,为了在不超出计算设备所能提供的计算资源范围的情况下,实现对lua语言脚本的监测,现有技术采用了在脚本运行过程中,函数进栈或出栈时抽取部分函数进行读取,但这会造成漏读的情况,更加无法忽视的是,这种性能监测程序会对lua代码有过强的侵入性,不便于实际使用。


技术实现要素:

3.有鉴于此,本技术实施例提供了一种脚本文件监测方法,以解决现有技术中存在的技术缺陷。本技术实施例同时提供了一种脚本文件监测装置,一种计算设备,以及一种计算机可读存储介质。
4.根据本技术实施例的第一方面,提供了一种脚本文件监测方法,包括:
5.接收针对待监测脚本文件的监测指令,其中,所述待监测脚本文件中包括至少一个脚本函数;
6.在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数;
7.获取所述目标脚本函数的目标脚本函数属性信息;
8.将所述目标脚本函数属性信息保存至监测数据文件。
9.可选地,所述确定所述出栈操作的目标脚本函数之前还包括:
10.根据所述监测指令中携带的待监测脚本文件信息,确定所述监测指令对应的待监测脚本文件;
11.确定所述待监测脚本文件的文件属性信息;
12.基于所述文件属性信息,构建监测脚本函数;
13.通过所述监测脚本函数对所述待监测脚本文件进行监测。
14.可选地,所述基于所述文件属性信息,构建监测脚本函数,包括:
15.解析所述文件属性信息,得到运行环境信息;
16.根据所述运行环境信息确定监测编程语言;
17.基于所述监测编程语言构建所述监测脚本函数。
18.可选地,所述获取所述目标脚本函数的目标脚本函数属性信息包括:
19.获取所述目标脚本函数的函数标识信息、函数地址信息以及函数时长信息;
20.基于所述函数标识信息以及所述函数地址信息构建目标脚本函数哈希值;
21.根据所述函数标识信息、所述函数地址信息、所述函数时长信息以及所述目标脚本函数哈希值生成目标脚本函数属性信息。
22.可选地,所述获取所述目标脚本函数的函数时长信息包括:
23.确定所述目标脚本函数对应的出栈时间与入栈时间;
24.计算所述出栈时间与所述入栈时间之间的差值;
25.基于计算结果确定所述函数时长信息。
26.可选地,所述将所述目标脚本函数属性信息保存至监测数据文件,包括:
27.在所述函数时长信息大于等于预设时长阈值的情况下,将所述目标脚本函数属性信息保存至监测数据文件;
28.在所述函数时长信息小于预设时长阈值的情况下,执行所述在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数的步骤。
29.可选地,所述将所述目标脚本属性信息保存至监测数据文件包括:
30.将所述目标脚本函数属性信息转换为待存储字符串,其中,所述待存储字符串中包括数字字符;
31.压缩所述待存储字符串中的数字字符,获得待存储字符串对应的目标字符串;
32.将所述目标字符串保存至监测数据文件。
33.可选地,所述压缩所述待存储字符串中的数字字符,获得待存储字符串对应的目标字符串包括:
34.在所述待存储字符串中确定目标数字字符;
35.基于所述目标数字字符与预设的数字压缩参数确定目标数据;
36.生成每个目标数据对应的标识码,根据每个目标数据对应的标识码生成并存储所述待存储数据对应的存储标识码;
37.将所述待存储字符串中的数字字符转换为对应的存储标识码,获得待存储字符串对应的目标字符串。
38.可选地,所述基于所述目标数字字符与预设的数字压缩参数确定目标数据包括:
39.将所述目标数字字符对应数值除以所述数字压缩参数;
40.判断第i次商值是否小于所述数字压缩参数,其中,i为正整数;
41.若是,基于得到的各个余数值与第i次商值构建目标数据;
42.若否,将第i次商值除以所述数字压缩参数后,i自增1,执行所述判断得到的商值是否小于所述数字压缩参数的步骤。
43.可选地,将所述目标脚本函数属性信息保存至监测数据文件包括:
44.判断所述监测数据文件中是否存在所述目标脚本函数哈希值;
45.若是,将所述目标脚本函数属性信息中的所述函数地址信息删除,将删除完成的所述目标脚本函数属性信息保存至监测数据文件;
46.若否,将所述目标脚本函数属性信息保存至监测数据文件。
47.可选地,所述将所述目标脚本函数属性信息保存至监测数据文件之后还包括:
48.接收针对所述监测数据文件的显示指令;
49.响应于所述显示指令,对所述监测数据文件做可视化处理,生成并展示可视化结果。
50.根据本技术实施例的第二方面,提供了一种脚本文件监测装置,包括:
51.接收模块,被配置为接收针对待监测脚本文件的监测指令,其中,所述待监测脚本文件中包括至少一个脚本函数;
52.监测模块,被配置为在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数;
53.获取模块,被配置为获取所述目标脚本函数的目标脚本函数属性信息;
54.保存模块,被配置为将所述目标脚本函数属性信息保存至监测数据文件。
55.根据本技术实施例的第三方面,提供了一种计算设备,包括:
56.存储器和处理器;
57.所述存储器用于存储计算机可执行指令,所述处理器执行所述计算机可执行指令时实现所述脚本文件监测方法的步骤。
58.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述脚本文件监测方法的步骤。
59.根据本技术实施例的第五方面,提供了一种芯片,其存储有计算机程序,该计算机程序被芯片执行时实现所述脚本文件监测方法的步骤。
60.本技术提供的脚本文件监测方法,通过响应于针对待监测脚本文件的监测指令,在监测到待监测脚本文件对应的堆栈出现出栈操作的情况下,确定出栈操作对应的目标脚本函数;获取目标脚本函数的目标脚本函数属性信息并将所述目标脚本函数属性信息保存至监测数据文件的方法,减少对待监测脚本文件监测过程中调用脚本函数的漏读,并且减少了监测过程中计算资源的浪费,提升了监测效率。
附图说明
61.图1是本技术一实施例提供的一种脚本文件监测方法的流程图;
62.图2是本技术一实施例提供的一种应用于c语言的脚本文件监测方法的处理流程图;
63.图3是本技术一实施例提供的一种脚本文件监测装置的结构示意图;
64.图4是本技术一实施例提供的一种计算设备的结构框图。
具体实施方式
65.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
66.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多
个相关联的列出项目的任何或所有可能组合。
67.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
68.首先,对本发明一个或多个实施例涉及的名词术语进行解释。
69.lua语言:是一种灵活的脚本语言,由标准c编写而成,几乎在所有操作系统和平台上都可以编译,运行;可以很容易的被c/c 代码调用,也可以反过来调用c/c 的函数,这使得lua在应用程序中可以被广泛应用。
70.字节:一个字节存储8位无符号数,用于存储0-255范围的二进制数字序列,二进制数字序列在计算机中作为一个数字单元,一般为8位二进制数。
71.火焰图:每一列代表一个调用栈,每一个格子代表一个函数。纵轴展示了栈的深度,按照调用关系从下到上排列,最顶上格子代表采样时,正在占用cpu的函数;横轴的意义是指火焰图将采集的多个调用栈信息,通过按字母横向排序的方式将众多信息聚合在一起,需要注意的是它并不代表时间;横轴格子的宽度代表其在采样中出现频率,所以一个格子的宽度越大,说明它是瓶颈原因的可能性就越大。
72.在本技术中,提供了一种脚本文件监测方法。本技术同时涉及一种脚本文件监测装置、一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
73.实际应用中,对于待监测脚本文件的监测,采用的方法是入栈检测,即待监测脚本中的脚本函数被调用时,将脚本函数放入对应堆栈;在脚本函数被放入对应堆栈的那一时刻,对脚本函数的调用情况进行监测,但是由于脚本函数的调用过程还未结束,需要将脚本函数的调用情况进行记录的情况下,就要对入栈的脚本函数进行实时的监测,保证脚本函数的整个调用过程都被记录下来,但是这种对脚本函数调用的全过程进行实时监测的方法,会耗费大量计算资源。而为了使耗费的计算资源在计算设备所能承受的范围之内,采用了类似“抽查”的技术手段,而这种方式会导致监测过程中出现漏读的情况。
74.在本技术中,采用了出栈检测的方法,即待监测脚本中的脚本函数出栈的时刻,对脚本函数进行监测,由于此时脚本函数已经完成了调用的全过程,所以此时只需要采集脚本函数调用的历史信息,而不用采取实时监测的方法,节省了计算资源,并且不会出现漏读情况。
75.图1示出了根据本技术一实施例提供的一种脚本文件监测方法的流程图,具体包括以下步骤:
76.步骤102:接收针对待监测脚本文件的监测指令,其中,所述待监测脚本文件中包括至少一个脚本函数。
77.其中,待监测脚本文件可理解为具有性能监测需求的程序,由浏览器、多媒体创作工具提供编程语言,此外,待监测脚本文件也可以由应用程序的宏和创作系统的批处理语言提供;监测指令可理解为用户基于自身对于待监测脚本文件的监测需求而发送的指令,用以指示对待监测脚本文件执行监测操作;脚本函数可理解为待监测脚本文件包含的函数。
78.基于此,接收监测指令,基于接收到的监测指令的指示,对待监测脚本文件执行监测操作。
79.步骤104:在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数。
80.具体的,接收监测指令之后,基于监测指令的指示,对待监测脚本文件进行监测操作,而这个监测过程可以理解为对待监测脚本文件中的脚本函数的调用过程进行监测,需要说明的是,本技术采用了出栈检测(又称为退栈监测)的方法。
81.其中,目标脚本函数可以理解为待监测脚本文件对应堆栈有出栈操作情况下,出栈操作对应的脚本函数,即在待监测脚本文件执行过程中,完成调用的脚本函数。
82.基于此,对待监测脚本文件的执行过程进行监测,待监测脚本文件在执行过程中不断的对其内部包含的脚本函数进行着调用,在对应的堆栈中出现出栈操作的情况下,即在脚本函数调用结束的时刻,将此时刻完成调用的脚本函数确定为目标脚本函数。
83.进一步的,对待监测脚本文件执行过程进行监测时,需要用于监测的脚本文件对整个执行过程进行监测,而用于监测的脚本文件的构建过程取决于待监测脚本文件本身,不同的待监测脚本文件需要使用不同的脚本文件进行监测,在本实施例中,具体实现方式如下:
84.根据所述监测指令中携带的待监测脚本文件信息,确定所述监测指令对应的待监测脚本文件;确定所述待监测脚本文件的文件属性信息;基于所述文件属性信息,构建监测脚本函数;通过所述监测脚本函数对所述待监测脚本文件进行监测。
85.其中,待监测脚本文件信息可以理解为,用于指示需要被监测的待监测脚本文件;文件属性信息可以理解为,记录待监测脚本文件的运行环境、编程语言等属性信息;监测脚本函数可以理解为,对待监测脚本文件的执行过程进行监测的函数。
86.基于此,对监测指令进行解析,得到监测指令中携带的待监测脚本文件信息;之后根据待监测脚本文件信息确定需要被监测的待监测脚本文件,确定了待监测脚本文件之后,再确定待监测脚本文件的文件属性信息;通过文件属性信息对待监测脚本文件的属性的描述,构建最符合对待监测脚本文件的执行过程进行监测的监测脚本函数;最后通过构建出的监测脚本函数对待监测脚本文件进行监测。
87.举例说明,接收监测指令b1,通过对监测指令b1的解析,得到了待监测脚本文件信息c1,再根据待监测脚本文件信息c1确定,基于lua语言编写的脚本文件a1是待监测脚本文件;再确定待监测脚本文件的文件属性信息c2,基于文件属性信息c2构建最适合对待监测脚本文件a1进行监测的监测脚本函数d1;最后根据监测脚本函数d1对待监测脚本文件a1的执行过程进行监测。
88.综上,通过对待监测脚本文件的属性信息的确定,实现了构建最适合待监测脚本文件执行过程中进行监测的监测脚本函数,提升了监测性能与监测效率。
89.进一步的,对待监测脚本文件的执行过程进行监测,需要确定待监测脚本文件的编程语言,以及待监测脚本文件的运行环境,这对于监测脚本函数的构建至关重要,在本实施例中,具体实现方式如下:
90.解析所述文件属性信息,得到运行环境信息;根据所述运行环境信息确定监测编程语言;基于所述监测编程语言构建所述监测脚本函数。
91.其中,运行环境信息可理解为,包含着待监测脚本文件的运行环境以及包含着待监测脚本文件所使用的编程语言的信息;监测编程语言可理解为监测脚本函数所使用的编程语言。
92.基于此,根据文件属性信息中包含的运行环境信息,可以确定待监测脚本文件的运行环境与使用的编程语言,再由此确定监测脚本函数需要使用的编程语言,使用确定的编程语言对监测脚本函数进行构建。
93.沿用上例,根据待监测脚本文件a1的文件属性信息c2确定待监测脚本文件运行环境为基于虚拟机运行,使用的编程语言为lua语言,由于lua语言的编写的监测脚本函数的运行效率低,侵入性强,故此采用c语言构建监测脚本函数d1。
94.综上,通过待监测脚本文件的运行环境以及使用的编程语言,可以确定在对应场景下的效果最优的编程语言,通过这种方式构建监测脚本函数使监测过程的效率增快,效果最佳。
95.步骤106:获取所述目标脚本函数的目标脚本函数属性信息。
96.具体的,确定了目标脚本函数之后,需要确定目标脚本函数的属性信息,以实现对目标脚本函数的执行进行记录,由于目标脚本函数是待监测脚本文件执行过程中被调用的一个脚本函数,将待监测脚本文件执行过程中的所有脚本函数的执行信息进行记录与处理之后,就可以实现对待监测脚本文件整个执行过程的监测。
97.其中,目标脚本函数属性信息可以理解为,在待监测脚本文件在执行过程中对目标脚本函数进行调用时,目标脚本函数的一些执行参数;由于待监测脚本文件的执行过程就是对其自身的脚本函数的不断调用的过程,那么将每次的脚本函数的调用过程的参数进行记录,就实现了待监测脚本函数执行过程的监测。
98.基于此,确定了目标脚本函数之后,将目标脚本函数在被调用过程中的参数进行获取,得到目标脚本函数属性信息。
99.进一步的,对待监测脚本文件的执行过程进行监测,记录监测结果的过程中,需要对待监测脚本文件调用的目标脚本函数的名称、地址、占用的计算资源量等进行记录,在本实施例中,具体实现方式如下:
100.获取所述目标脚本函数的函数标识信息、函数地址信息以及函数时长信息;基于所述函数标识信息以及所述函数地址信息构建目标脚本函数哈希值;根据所述函数标识信息、所述函数地址信息、所述函数时长信息以及所述目标脚本函数哈希值生成目标脚本函数属性信息。
101.其中,函数标识信息可以理解为包含目标脚本函数的函数名、函数编码、函数id等的信息;函数地址信息可以理解为包含目标脚本函数的函数地址以及函数路径的信息;函数时长信息可以理解为包含目标脚本函数被待监测脚本文件调用的时长以及调用时消耗的cpu资源的信息,需要说明的是,消耗的cpu资源可以是cpu执行目标脚本函数的过程中所占用的cpu处理空间,也可以是cpu执行目标脚本函数过程中的占用率等,具体选用根据实际使用场景决定,本技术对此不进行限定;目标脚本哈希值可以理解为对函数标识信息以及函数地址信息进行哈希运算,得到的哈希值。
102.基于此,对目标脚本函数的函数标识、函数地址以及函数调用时长的信息一一获取,之后对函数标识信息以及函数地址信息进行哈希计算,得到目标脚本函数哈希值;最后
将函数标识信息、函数地址信息、函数时长信息以及目标脚本函数哈希值进行集合,得到目标脚本函数属性信息,用以实现对目标脚本函数调用过程的记录。
103.沿用上例,监测脚本函数d1对待监测脚本文件a1进行监测,在待监测脚本文件a1对应的堆栈有出栈操作时,确定出栈操作的函数d2为目标脚本函数,确定目标脚本函数的函数标识信息a1,函数地址信息a2以及函数时长信息t;将函数标识信息a1以及函数地址信息a2做哈希运算,得到目标脚本函数哈希值h;将函数标识信息a1、函数地址信息a2函数时长信息t以及目标脚本函数哈希值h集合得到目标脚本函数属性信息c3。
104.综上,通过对待监测脚本文件执行过程中,目标脚本函数的调用与处理的相关信息的收集,实现了对待监测脚本文件调用目标脚本函数过程的监测。
105.进一步的,函数时长信息是对目标脚本函数调用过程的一种直观体现,函数时长信息越长说明目标脚本函数被调用过程所进行的处理与运算越多,反之越少,而确定函数时长信息,在本实施例中,具体实现方式如下:
106.确定所述目标脚本函数对应的出栈时间与入栈时间;计算所述出栈时间与所述入栈时间之间的差值;基于计算结果确定所述函数时长信息。
107.其中,入栈时间可以理解为目标脚本函数被调用的起始时间;出栈时间可以理解为目标脚本函数被调用的终止时间。
108.基于此,脚本函数被调用的时候,会在入栈时记录其入栈时间,在出栈时记录其出栈时间;在出栈操作执行时,将此时出栈的脚本函数确定为目标脚本函数,将目标脚本函数的出栈时间减去入栈时间,得到函数时长信息。
109.沿用上例,确定目标脚本函数后,将记录的目标函数的出栈时间t2减去入栈时间t1,得到函数时长信息t。
110.综上,通过对目标脚本函数的入栈时间与出栈时间的记录,可以直接得到函数时长信息。
111.步骤108:将所述目标脚本函数属性信息保存至监测数据文件。
112.具体的,获取到了目标脚本函数属性信息之后,还需要将其进行保存,以保证用户对监测待监测脚本文件执行过程的监测结果的查看。
113.其中,监测数据文件可以理解为专用于对监测结果进行保存的数据库、存储队列等,需要说明的是,监测数据文件的目的是为了存储待监测脚本文件监测结果,其具体的形式与类型,本技术不进行限定。
114.基于此,在获取到目标脚本函数属性信息,即待监测脚本文件执行过程的监测结果之后,将这个监测结果存储在监测数据文件中,方便后续用户对于监测结果的查看或是其他处理。
115.进一步的,函数时长信息直观的表示着目标脚本函数被调用后,进行处理的情况,而目标脚本函数在调用过程中存在没有进行处理的情况,这种情况下对目标脚本函数调用过程的监测结果是没有记录意义的,可不进行记录,在本实施例中,具体实现方式如下:
116.在所述函数时长信息大于等于预设时长阈值的情况下,将所述目标脚本函数属性信息保存至监测数据文件;在所述函数时长信息小于预设时长阈值的情况下,执行所述在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数的步骤。
117.其中,预设时长阈值可以理解为根据实际使用情况进行设定的参数值,在函数时长信息小于预设时长阈值的情况下,说明目标脚本函数在调用过程中没有进行数据的处理。
118.基于此,将得到的目标脚本函数的函数时长信息与预设时长阈值进行比较,比较的结果若是小于的情况,对目标脚本函数不进行记录,其余情况下对目标脚本函数的调用过程的参数进行记录,保存至监测数据文件。
119.沿用上例,比较之后得到,目标脚本函数d2的函数时长信息t大于预设时长阈值t,在这种情况下,将目标脚本函数属性信息c3保存至监测数据文件a2。
120.综上,通过对目标脚本函数的函数时长信息,将待监测脚本文件执行过程中未进行处理的脚本函数的相关信息不进行存储,在保证监测结果的完整性的前提下,节省了存储空间,减轻了硬件压力,提升了处理速度。
121.进一步的,本技术所采用的脚本文件监测方法,在对待监测文件的执行过程进行实时监测时,将符合条件的目标脚本函数的相关信息进行存储,会导致存储空间占用比较大,硬件压力也比较大,对设备和系统的要求会变得比较高,为解决这些问题,在本实施例中,具体实现方式如下:
122.将所述目标脚本函数属性信息转换为待存储字符串,其中,所述待存储字符串中包括数字字符;压缩所述待存储字符串中的数字字符,获得待存储字符串对应的目标字符串;将所述目标字符串保存至监测数据文件。
123.其中,待存储字符串可以理解为,将目标脚本属性信息转换为字符串形式;将待存储字符串进行压缩得到目标字符串,需要说明的是,压缩的方式可以根据实际使用情景进行选取,本实施例不进行限定。
124.基于此,将目标脚本函数属性信息转换为待存储字符串,需要说明的是,转换方式可以根据实际使用情景进行选取,本实施例不进行限定;将得到的待存储字符串进行压缩,得到目标字符串,将目标字符串保存在监测数据文件中。
125.沿用上例,将得到的目标脚本函数属性信息c3转换为字符串形式,得到待存储字符串c1,将待存储字符串进行压缩,得到目标字符串c2;将目标字符串c2保存至监测数据文件a2。
126.综上,通过将目标脚本函数属性信息进行压缩,并且对存储进监测数据文件中的字符串进行压缩,减轻了存储空间压力。
127.进一步的,在对待存储字符串进行压缩的过程中,压缩的重点是对待存储字符串中的数字字符进行压缩,在本实施例中,具体实现方式如下:
128.在所述待存储字符串中确定目标数字字符;基于所述目标数字字符与预设的数字压缩参数确定目标数据;生成每个目标数据对应的标识码,根据每个目标数据对应的标识码生成并存储所述待存储数据对应的存储标识码;将所述待存储字符串中的数字字符转换为对应的存储标识码,获得待存储字符串对应的目标字符串。
129.其中,目标数字字符可以理解为待存储字符串中的需要进行压缩的数字字符;数字压缩参数可以理解为预先设置的参数,应用于目标数字字符的压缩过程;目标数据可以理解为基于数字压缩参数对目标数字字符进行处理得出的至少由一个元素构成的序列;标识码可以理解为基于目标数据中的各个元素构建的一一对应的字节集合;存储标识码可以
理解为,将标识码中的各个字节组合形成无符号数字串,用于计算设备的存储。
130.基于此,确定待存储字符串中一个的数字字符作为目标数字字符,基于预设的数字压缩参数对目标数字字符进行处理,得到目标数据,为目标数据中的各个元素构建对应的标识码,将得到的各个标识码进行排列,形成一串无符号数字串形式的存储标识码;将待存储字符串中的所有数字字符都以以上的方式都进行处理,将所有得到的存储标识码进行集合得到目标字符串。
131.综上,基于数字压缩参数对待存储字符串中的数字字符进行压缩,大大降低了监测数据文件所占用的存储空间,减轻了硬件压力。
132.进一步的,基于数字压缩参数对待存储字符串中的数字字符进行压缩的过程,在本实施例中,具体实现方式如下:
133.将所述目标数字字符对应数值除以所述数字压缩参数;判断第i次商值是否小于所述数字压缩参数,其中,i为正整数;若是,基于得到的各个余数值与第i次商值构建目标数据;若否,将第i次商值除以所述数字压缩参数后,i自增1,执行所述判断得到的商值是否小于所述数字压缩参数的步骤。
134.其中,将目标数字字符串对应数值除以数字压缩参数,可以得到商值与余数。
135.基于此,将目标数字字符对应数值除以数字压缩参数,得到商值和余数,判断商值是否小于数字压缩参数,若不小于,则将商值继续除以数字压缩参数,得到新的商值和余数,在将新的商值与数字压缩参数比较大小,大于的情况下就继续将当前的商值除以数字压缩参数,直到得到的商值小于数字压缩参数后,基于所有的余数与最后得到的商值构建目标数据。
136.沿用上例,若得到的待存储数字字符串为100000;sell;123456,从左向右遍历,确定第一个目标数字字符为100000,由于当前的存储环境中一个字节中存储8位无符号数,用于存储0-255范围的二进制数字序列,这也就说明一个字节中所能存储的最大数字为255,一个字节无法存储大于255的数字,所以将数字压缩参数设定为255,将目标数字字符100000除以数字压缩参数255,得到第一次商值为392,第一次余数为40,判断第一次商值392大于数字压缩参数255,将第一次商值392除以数字压缩参数255,得到第二次商值为1,第二次余数为137,判断第二次商值1小于数字压缩参数255,基于第二次商值1,以及两次余数40与137确定目标数据为(1,137,40)。
137.基于目标数据(1,137,40)确定对应的标识码为(00000001,10001001,00101000),将每个目标数据对应的标识码生成存储标识码(000000011000100100101000),确定待存储数字字符串中的第二个目标数字字符123456,沿用上述方法,得到它的存储标识码为(000000011110010100100100),确定“;”与“s”、“e”、“l”的ascii码分别为“00111011”、“01110011”、“01100101”和“01101100”,那么此时将所有的存储标识码与待存储数字字符串中其他元素的ascii码构成目标字符串(000000011000100100101000001110110111001101100101011011000110110000111011000000011110010100100100),基于此字符串为了防止ascii码与存储标识码之间在解析时出现混淆,则构建解码标识,存储标识码对应的位置用1表示,ascii码用0表示,则解码标识构建为“111000000111”,基于目标字符串与解码标识可以实现目标字符串向待存储数字字符串的反向转化。
138.通过以上内容可知,数字压缩参数对目标数字字符的压缩效果是基于除法,此时
将数字压缩参数设定的越大,压缩效果越好,而数字压缩参数不能大于256,否则就会出现一个字节无法表示的情况,所以优选的选择255。
139.综上,通过将目标数字字符串对应的数值除以数字压缩参数,得到商值和余数,若此时的商值依旧大于数字压缩参数,就将商值再除以数字压缩参数,得到新的商值和余数,通过这样不断的计算,最终将目标数字字符串将会被压缩到比除法运算次数多一位的目标数据,实现了目标数字字符串的压缩,节省了存储空间。
140.进一步的,在待监测脚本文件执行过程中,常常会出现同一个脚本函数的反复调用,在这种情况下将重复调用的脚本函数进行存储对存储空间的浪费是比较大的,为了解决这个问题,在本实施例中,具体实现方式如下:
141.判断所述监测数据文件中是否存在所述目标脚本函数哈希值;若是,将所述目标脚本函数属性信息中的所述函数地址信息删除,将删除完成的所述目标脚本函数属性信息保存至监测数据文件;若否,将所述目标脚本函数属性信息保存至监测数据文件。
142.基于此,由于目标脚本函数哈希值与目标脚本函数的一一对应关系,通过将当前的目标脚本函数的目标脚本函数哈希值与监测数据文件中的数据进行对比,就可以判断目标脚本函数是否在之前已经被待监测脚本文件调用,在之前已经调用的情况下,将目标脚本函数的函数地址信息进行删除,将删除之后的目标脚本函数属性信息保存至监测数据文件,实现存储空间的节省;在之前没有调用的情况下,将目标脚本函数对应的目标脚本函数属性信息保存至监测数据文件。
143.沿用上例,判断监测数据文件a2中是否存在与目标脚本函数哈希值h相同的哈希值,若存在,将目标脚本函数属性信息c3中的函数地址信息a2进行删除,将删除完成的目标脚本函数属性信息c3保存至监测数据文件a2;若不存在,架构目标脚本函数属性信息c3保存至监测数据文件a2。
144.综上,通过对目标脚本函数哈希值与监测数据文件进行对比,实现了对重复调用的脚本函数进行确定,将重复调用脚本函数的函数地址信息删除,减少了重复调用的脚本函数对应的目标脚本函数属性信息,仅保留函数标识信息作为目标脚本函数的标识,减少了在监测数据文件中出现重复信息,节省了存储空间。
145.进一步的,在对待监测脚本文件进行监测的过程之后,用户需要对监测结果进行查看时,在本实施例中,具体实现方式如下:
146.接收针对所述监测数据文件的显示指令;响应于所述显示指令,对所述监测数据文件做可视化处理,生成并展示可视化结果。
147.其中,显示指令可理解为用户发送的用于查看待监测脚本文件的监测结果的指令。
148.具体的,接收用户发送的用于查看待监测脚本文件的监测结果的显示指令,根据显式指令的指示,将待监测脚本文件对应的监测数据文件进行可视化处理,生成可视化展示结果并向用户进行展示。
149.沿用上例,接收用户发送的显示指令b2,基于显示指令b2指示的监测数据文件a2构建对应的火焰图,将生成的火焰图向用户进行展示。
150.综上,通过可视化展示待监测脚本文件的监测结果,展示效果更加直观,方便用户查看。
151.本技术提供的脚本文件监测方法,通过响应于针对待监测脚本文件的监测指令,在监测到待监测脚本文件对应的堆栈出现出栈操作的情况下,确定出栈操作对应的目标脚本函数;获取目标脚本函数的目标脚本函数属性信息并将所述目标脚本函数属性信息保存至监测数据文件的方法,减少对待监测脚本文件监测过程中调用脚本函数的漏读,并且减少了监测过程中计算资源的浪费,提升了监测效率。
152.下述结合附图2,以本技术提供的脚本文件监测方法对c语言脚本文件的监测应用为例,对所述脚本文件监测方法进行进一步说明。其中,图2示出了本技术一实施例提供的一种应用于c语言的脚本文件监测方法的处理流程图,具体包括以下步骤:
153.步骤202:接收针对待监测脚本文件的监测指令。
154.具体的,接收到针对c语言脚本文件cj的监测指令j1。
155.步骤204:根据所述监测指令中携带的待监测脚本文件信息,确定所述监测指令对应的待监测脚本文件。
156.具体的,基于检测指令j1中携带的待监测脚本文件信息x1,确定待监测脚本文件为c语言脚本文件cj。
157.步骤206:确定所述待监测脚本文件的文件属性信息。
158.具体的,确定c语言脚本文件cj的文件属性信息x2。
159.步骤208:基于所述文件属性信息,构建监测脚本函数。
160.具体的,根据文件属性信息x2确定c语言脚本文件cj的运行环境为终端,编程语言为c语言,由此确定监测脚本函数对应的监测编程语言y为c语言,基于监测编程语言y构建监测脚本函数h1。
161.步骤210:在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数。
162.具体的,监测脚本函数h1对c语言脚本文件cj进行监测,在c语言脚本文件cj对应的堆栈有出栈操作的情况下,确定对应的目标脚本函数h2。
163.步骤212:获取所述目标脚本函数的目标脚本函数属性信息。
164.具体的,获取c语言脚本文件cj的出栈时间t1,入栈时间t2,将t1-t2得到函数时长信息tx,获取c语言脚本文件cj的函数标识信息h1、函数地址信息h2。
165.对函数标识信息h1、函数地址信息h2进行哈希运算,得到目标脚本函数哈希值mh,将函数标识信息h1、函数地址信息h2、函数时长信息tx以及目标脚本函数哈希值mh集合,得到目标脚本函数属性信息ms。
166.步骤214:判断所述函数时长信息大于等于预设时长阈值是否成立;
167.若是,执行步骤216;
168.若否,执行步骤210。
169.步骤216:将所述目标脚本函数属性信息转换为待存储字符串。
170.具体的,所述目标脚本函数属性信息ms转换为待存储字符串为10000:me。确定目标数字字符为10000,将目标数字字符为10000除以数字压缩参数255,得到第一次商值为39,第一次余数为55,由于第一次商值小于数字压缩参数255,所以确定目标数据为(39,55),生成每个目标数据对应的标识码(00100111,00110111),再结合字符“;”、“m”、“e”的ascii码确定目标字符串为(0010011100110111001110110110110101100101)。
171.步骤218:将所述目标字符串保存至监测数据文件。
172.步骤220:接收针对所述监测数据文件的显示指令。
173.步骤222:响应于所述显示指令,对所述监测数据文件做可视化处理,生成并展示可视化结果。
174.本技术提供的脚本文件监测方法,通过响应于针对待监测脚本文件的监测指令,在监测到待监测脚本文件对应的堆栈出现出栈操作的情况下,确定出栈操作对应的目标脚本函数;获取目标脚本函数的目标脚本函数属性信息并将所述目标脚本函数属性信息保存至监测数据文件的方法,减少对待监测脚本文件监测过程中调用脚本函数的漏读,并且减少了监测过程中计算资源的浪费,提升了监测效率。
175.与上述方法实施例相对应,本技术还提供了脚本文件监测装置实施例,图3示出了本技术一实施例提供的一种脚本文件监测装置的结构示意图。如图3所示,该装置包括:
176.接收模块302,被配置为接收针对待监测脚本文件的监测指令,其中,所述待监测脚本文件中包括至少一个脚本函数;
177.监测模块304,被配置为在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数;
178.获取模块306,被配置为获取所述目标脚本函数的目标脚本函数属性信息;
179.保存模块308,被配置为将所述目标脚本函数属性信息保存至监测数据文件。
180.一个可选的实施例中,所述脚本文件监测装置还包括:
181.构建模块,被配置为根据所述监测指令中携带的待监测脚本文件信息,确定所述监测指令对应的待监测脚本文件;确定所述待监测脚本文件的文件属性信息;基于所述文件属性信息,构建监测脚本函数;通过所述监测脚本函数对所述待监测脚本文件进行监测。
182.一个可选的实施例中,所述构建模块还被配置为:
183.解析所述文件属性信息,得到运行环境信息;根据所述运行环境信息确定监测编程语言;基于所述监测编程语言构建所述监测脚本函数。
184.一个可选的实施例中,所述获取模块306还被配置为:
185.获取所述目标脚本函数的函数标识信息、函数地址信息以及函数时长信息;基于所述函数标识信息以及所述函数地址信息构建目标脚本函数哈希值;根据所述函数标识信息、所述函数地址信息、所述函数时长信息以及所述目标脚本函数哈希值生成目标脚本函数属性信息。
186.一个可选的实施例中,所述获取模块306还被配置为:
187.确定所述目标脚本函数对应的出栈时间与入栈时间;计算所述出栈时间与所述入栈时间之间的差值;基于计算结果确定所述函数时长信息。
188.一个可选的实施例中,所述保存模块308还被配置为:
189.在所述函数时长信息大于等于预设时长阈值的情况下,将所述目标脚本函数属性信息保存至监测数据文件;在所述函数时长信息小于预设时长阈值的情况下,执行所述在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数的步骤。
190.一个可选的实施例中,所述保存模块308还被配置为:
191.将所述目标脚本函数属性信息转换为待存储字符串,其中,所述待存储字符串中
包括数字字符;压缩所述待存储字符串中的数字字符,获得待存储字符串对应的目标字符串;将所述目标字符串保存至监测数据文件。
192.一个可选的实施例中,所述保存模块308还被配置为:
193.在所述待存储字符串中确定目标数字字符;基于所述目标数字字符与预设的数字压缩参数确定目标数据;生成每个目标数据对应的标识码,根据每个目标数据对应的标识码生成并存储所述待存储数据对应的存储标识码;将所述待存储字符串中的数字字符转换为对应的存储标识码,获得待存储字符串对应的目标字符串。
194.一个可选的实施例中,所述保存模块308还被配置为:
195.将所述目标数字字符对应数值除以所述数字压缩参数;判断第i次商值是否小于所述数字压缩参数,其中,i为正整数;若是,基于得到的各个余数值与第i次商值构建目标数据;若否,将第i次商值除以所述数字压缩参数后,i自增1,执行所述判断得到的商值是否小于所述数字压缩参数的步骤。
196.一个可选的实施例中,所述保存模块308还被配置为:
197.判断所述监测数据文件中是否存在所述目标脚本函数哈希值;若是,将所述目标脚本函数属性信息中的所述函数地址信息删除,将删除完成的所述目标脚本函数属性信息保存至监测数据文件;若否,将所述目标脚本函数属性信息保存至监测数据文件。
198.一个可选的实施例中,所述脚本文件监测装置还包括:
199.显示模块,被配置为接收针对所述监测数据文件的显示指令;响应于所述显示指令,对所述监测数据文件做可视化处理,生成并展示可视化结果。
200.本技术提供的脚本文件监测方法,通过响应于针对待监测脚本文件的监测指令,在监测到待监测脚本文件对应的堆栈出现出栈操作的情况下,确定出栈操作对应的目标脚本函数;获取目标脚本函数的目标脚本函数属性信息并将所述目标脚本函数属性信息保存至监测数据文件的方法,减少对待监测脚本文件监测过程中调用脚本函数的漏读,并且减少了监测过程中计算资源的浪费,提升了监测效率。
201.上述为本实施例的一种脚本文件监测装置的示意性方案。需要说明的是,该脚本文件监测装置的技术方案与上述的脚本文件监测方法的技术方案属于同一构思,脚本文件监测装置的技术方案未详细描述的细节内容,均可以参见上述脚本文件监测方法的技术方案的描述。此外,装置实施例中的各组成部分应当理解为实现该程序流程各步骤或该方法各步骤所必须建立的功能模块,各个功能模块并非实际的功能分割或者分离限定。由这样一组功能模块限定的装置权利要求应当理解为主要通过说明书记载的计算机程序实现该解决方案的功能模块构架,而不应当理解为主要通过硬件方式实现该解决方案的实体装置。
202.图4示出了根据本技术一实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
203.计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域
网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
204.在本技术的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本技术范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
205.计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
206.其中,处理器420用于执行如下计算机可执行指令:
207.接收针对待监测脚本文件的监测指令,其中,所述待监测脚本文件中包括至少一个脚本函数;
208.在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数;
209.获取所述目标脚本函数的目标脚本函数属性信息;
210.将所述目标脚本函数属性信息保存至监测数据文件。
211.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的脚本文件监测方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述脚本文件监测方法的技术方案的描述。
212.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
213.接收针对待监测脚本文件的监测指令,其中,所述待监测脚本文件中包括至少一个脚本函数;
214.在监测到所述待监测脚本文件对应的堆栈有出栈操作的情况下,确定所述出栈操作的目标脚本函数;
215.获取所述目标脚本函数的目标脚本函数属性信息;
216.将所述目标脚本函数属性信息保存至监测数据文件。
217.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的脚本文件监测方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述脚本文件监测方法的技术方案的描述。
218.本技术一实施例还提供一种芯片,其存储有计算机程序,该计算机程序被芯片执行时实现所述脚本文件监测方法的步骤。
219.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
220.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
221.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
222.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
223.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献