异常调用方法的检测方法、装置及存储介质与流程
未命名
10-18
阅读:96
评论:0
1.本技术实施例涉及检测领域,具体涉及一种异常调用方法的检测方法、装置及存储介质。
背景技术:
2.应用程序的cpu(central processing unit,中央处理器)占用率过高,其耗时增加,将出现程序卡顿、应用冷启动慢、应用无响应等现象。
3.目前在应用程序出现上述现象时,无法及时知晓具体发生原因,从而无法快速检测出应用程序中存在的异常调用方法。
技术实现要素:
4.鉴于上述问题,本技术实施例提供了一种异常调用方法的检测方法、装置及存储介质,用于快速检测出应用程序中存在的异常调用方法。
5.根据本技术实施例的一个方面,提供了一种异常调用方法的检测方法,所述检测方法包括:检测应用程序对应目标消息的执行时长是否大于预设执行时长;若大于,则在存储数组中获取所述执行时长内存储的多个调用方法;其中,所述多个调用方法包括每个调用方法被调用的执行时长,所述存储数组是根据时间顺序存储调用方法的数组;根据每个调用方法被调用的执行时长确定出所述异常调用方法。
6.在一种可选的方式中,在所述检测应用程序对应目标消息的执行时长是否大于预设执行时长之前,所述检测方法进一步包括:遍历所述应用程序中的每个调用方法,并将遍历到的调用方法作为目标调用方法;对所述目标调用方法的起始位置和结尾位置进行标记操作,得到所述目标调用方法的目标起始位置标识和目标结尾位置标识,以得到所有调用方法的起始位置标识和结尾位置标识;其中,所述目标起始位置标识用于记录所述目标调用方法的起始调用时刻,所述目标结尾位置标识用于记录所述目标调用方法的结尾调用时刻。
7.在一种可选的方式中,所述目标起始位置标识包括所述目标调用方法的目标起始调用时刻标识和所述目标调用方法对应的目标类别标识,所述目标结尾位置标识包括所述目标调用方法的目标结尾调用时刻标识和所述目标类别标识;所述对所述目标调用方法的起始位置和结尾位置进行标记操作,得到所述目标调用方法的目标起始位置标识和目标结尾位置标识,进一步包括:在所述目标调用方法的起始位置插入所述目标起始调用时刻标识和所述目标类别标识,并在所述目标调用方法的结尾位置插入所述目标结尾调用时刻标识和所述目标类别标识。
8.在一种可选的方式中,每个调用方法的起始位置标识包括起始调用时刻标识,每个调用方法的结尾位置标识包括结尾调用时刻标识;所述检测方法还包括:在执行所述应用程序过程中,根据每个调用方法的起始调用时刻标识和结尾调用时刻标识,计算得到每个调用方法被调用的执行时长;将每个调用方法和每个调用方法被调用的执行时长存储于
所述存储数组中。
9.在一种可选的方式中,在所述检测应用程序对应目标消息的执行时长是否大于预设执行时长之前,所述检测方法包括:获取应用程序对应目标消息的打印起始时刻和打印结束时刻;根据所述打印起始时刻和所述打印结束时刻,计算得到所述目标消息的执行时长。
10.在一种可选的方式中,所述根据每个调用方法被调用的执行时长确定出所述异常调用方法,进一步包括:遍历每个调用方法,并将遍历到的调用方法作为目标调用方法;检测所述目标调用方法被调用的执行时长是否大于预设被调用的执行时长;若大于,则确定所述目标调用方法为所述异常调用方法。
11.在一种可选的方式中,所述检测方法还包括:检测所述存储数组中存储的调用方法的数量是否达到预设数量;若达到,则对调用时刻最早的调用方法进行更新处理。
12.根据本技术实施例的另一方面,提供了一种异常调用方法的检测装置,所述检测装置包括:检测模块,用于检测应用程序对应目标消息的执行时长是否大于预设执行时长;获取模块,用于若大于,则在存储数组中获取所述执行时长内存储的多个调用方法;其中,所述多个调用方法包括每个调用方法被调用的执行时长,所述存储数组是根据时间顺序存储调用方法的数组;确定模块,用于根据每个调用方法被调用的执行时长确定出所述异常调用方法。
13.根据本技术实施例的一个方面,提供了一种电子设备,包括:控制器;存储器,用于存储一个或多个程序,当一个或多个程序被所述控制器执行时,以执行上述的检测方法。
14.根据本技术实施例的一个方面,还提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述的检测方法。
15.根据本技术实施例的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的检测方法。
16.本技术实施例通过检测应用程序对应目标消息的执行时长是否大于预设执行时长;若大于,则在存储数组中获取执行时长内存储的多个调用方法;其中,多个调用方法包括每个调用方法被调用的执行时长,存储数组是根据时间顺序存储调用方法的数组;直接根据每个调用方法被调用的执行时长的大小,快速地确定出异常调用方法。
17.上述说明仅是本技术实施例技术方案的概述,为了能够更清楚了解本技术实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本技术实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
18.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是本技术一示例性实施例示出的一种异常调用方法的检测方法的流程示意图。
20.图2是基于图1所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。
21.图3是基于图2所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。
22.图4是示例性实施例示出的基于android应用程序中调用方法的改造过程的示意图。
23.图5是基于图2所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。
24.图6是示例性实施例示出的存储数组的示意图。
25.图7是基于图1所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。
26.图8是基于图1至图3、图5、图7中任一所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。
27.图9是优选实施例中应用程序的改造过程的示意图。
28.图10是示例性实施例示出的函数调用栈的截取过程的示意图。
29.图11是示例性实施例示出的异常代码的定位示意图。
30.图12是本技术一示例性实施例示出的异常调用方法的检测装置的结构示意图。
31.图13是本技术的一示例性实施例示出的电子设备的计算机系统的结构示意图。
具体实施方式
32.这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
33.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
34.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
35.在本技术中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
36.本技术的一方面提供了一种异常调用方法的检测方法。具体请参阅图1,图1是本技术一示例性实施例示出的一种异常调用方法的检测方法的流程示意图。该检测方法至少包括s110至s130,详细介绍如下:
37.s110:检测应用程序对应目标消息的执行时长是否大于预设执行时长。
38.应用程序中包括多个消息,多个消息可以被并列执行,也可按照预设顺序依次被执行。
39.目标消息是应用程序中被视为检测目标的消息,例如,应用程序中消息的被执行顺序为第一消息,第二消息和第三消息,若针对第二消息进行检测,则第二消息即为目标消息。
40.预设执行时长是预设参数,其单位为秒、分、时等,本实施例并不对其具体单位进行限制。
41.s120:若大于,则在存储数组中获取执行时长内存储的多个调用方法;其中,多个调用方法包括每个调用方法被调用的执行时长,存储数组是根据时间顺序存储调用方法的数组。
42.若检测到目标消息的执行时长大于预设执行时长,则表征应用程序出现卡顿等异常情况,为了准确定位异常情况的发生位置,需要对存储数组中的每个调用方法进行异常情况判断。
43.存储数组还可存储每个调用方法的编码和名称,单独设置一个存储数组用于存储调用方法相关的参数,因为存储数组设置有存储上限值,能更好地控制其占用的内存大小。
44.s130:根据每个调用方法被调用的执行时长确定出异常调用方法。
45.示例性地,将每个调用方法被调用的执行时长与预设阈值进行大小比较,并将比较结果表征执行时长大于预设阈值对应的调用方法确定为异常调用方法。
46.本实施例通过检测应用程序对应目标消息的执行时长是否大于预设执行时长;若大于,则在存储数组中获取执行时长内存储的多个调用方法;其中,多个调用方法包括每个调用方法被调用的执行时长,存储数组是根据时间顺序存储调用方法的数组;直接根据每个调用方法被调用的执行时长的大小,快速地确定出异常调用方法。
47.在本技术另一示例性实施例中,详细介绍了如何针对调用方法设置起始位置标识和结尾位置标识,具体请参阅图2,图2是基于图1所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。该检测方法在如图1所示的s110之前还包括s210至s220,详细介绍如下:
48.s210:遍历应用程序中的每个调用方法,并将遍历到的调用方法作为目标调用方法。
49.s220:对目标调用方法的起始位置和结尾位置进行标记操作,得到目标调用方法的目标起始位置标识和目标结尾位置标识,以得到所有调用方法的起始位置标识和结尾位置标识;其中,目标起始位置标识用于记录目标调用方法的起始调用时刻,目标结尾位置标识用于记录目标调用方法的结尾调用时刻。
50.对本实施例进行示例性说明:遍历到应用程序中的第二调用方法,对其起始位置和结尾位置进行标记操作,得到第二调用方法的起始位置标识和结尾位置标识;运行至起始位置标识时,则将该时刻记录为第二调用方法被执行的起始时刻,运行至结尾位置标识时,则将该时刻记录为第二调用方法被执行的结尾时刻。依次类推,对所有调用方法的起始位置和结尾位置进行标记操作,以得到所有调用方法的起始位置标识和结尾位置标识。
51.本实施例提供了一种记录调用方法起始时刻和结尾时刻的方式,即在调用方法的起始位置和结尾位置分别进行标记操作,得到起始位置标识和结尾位置标识,用以准确记
录调用方法被执行的起始时刻和结尾时刻。
52.在本技术另一示例性实施例中,详细介绍了起始位置标识和结尾位置标识具体组成,具体请参阅图3,图3是基于图2所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。其中,目标起始位置标识包括目标调用方法的目标起始调用时刻标识和目标调用方法对应的目标类别标识,目标结尾位置标识包括目标调用方法的目标结尾调用时刻标识和目标类别标识;该检测方法在如图2所示的s220中进一步包括s310,详细介绍如下:
53.s310:在目标调用方法的起始位置插入目标起始调用时刻标识和目标类别标识,并在目标调用方法的结尾位置插入目标结尾调用时刻标识和目标类别标识。
54.示例性地,android源码编译打包成apk过程可以简单的表示为java编译成class字节码,class字节码再编译成dex。本实施例在class字节码编译成dex的过程中,对其中的调用方法进行了改造,具体如图4所示,图4是示例性实施例示出的基于android应用程序中调用方法的改造过程的示意图。
55.首先,通过hook transformclass task,然后收集class中所有的类名,方法名以及从0开始自动增加的调用方法的id。再然后,在class中的所有调用方法中,在该调用方法的开始处插入tracebeat.in(id,name),即本实施例中的起始调用时刻标识和类别标识;在该方法的尾部插入tracebeat.out(id,name),即本实施例中的结尾调用时刻标识和类别标识;其中“id”和“name”分别是自动分配的long型的id,以及由类名+方法名组成的string类型的类方法名字段。当该调用方法被调用执行时,通过tracebeat.out-tracebeat.in(即结尾调用时刻-起始调用时刻),计算得到该调用方法被调用的执行时长。最后将所有改造后的dex打包到apk中。
56.值得注意的是,在某些实施例中,为了减小改造过程的工作量,以精简改造后的调用方法,仅需将“id”作为类别标识对调用方法进行改造,即无需引入“name”,但在高版本的android系统中,需要引入调用方法的名称,即必须引入“name”。
57.本实施例提供了一种目标调用方法的改造方式,通过在目标调用方法的目标起始位置设置目标起始调用时刻标识和目标类别标识,在目标结尾位置设置目标结尾调用时刻标识和目标类别标识,从而准确的记录目标调用方法被调用执行的起始时刻和结尾时刻。
58.在本技术另一示例性实施例中,详细介绍了计算每个调用方法被调用的执行时长过程中所需的参数,具体请参阅图5,图5是基于图2所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。其中,每个调用方法的起始位置标识包括起始调用时刻标识,每个调用方法的结尾位置标识包括结尾调用时刻标识;该检测方法基于图2所示步骤,还包括s510至s520,详细介绍如下:
59.s510:在执行应用程序过程中,根据每个调用方法的起始调用时刻标识和结尾调用时刻标识,计算得到每个调用方法被调用的执行时长。
60.示例性地,执行调用方法时,根据其起始调用时刻标识和结尾调用时刻标识,分别能获得其起始调用时刻和结尾调用时刻,将结尾调用时刻和起始调用时刻进行做差运算,计算得到时长则为该调用方法被调用的执行时长。
61.s520:将每个调用方法和每个调用方法被调用的执行时长存储于存储数组中。
62.示例性地,将native循环数组作为本实施例中的存储数组,用以存储调用方法和
调用方法被调用的执行时长。如图6所示,图6是示例性实施例示出的存储数组的示意图。其中,存储数组中存储有调用方法,以及调用方法的id和string类型的类方法名字段。
63.本实施例提供了一种计算每个调用方法被调用的执行时长的方式,通过起始调用时刻标识和结尾调用时刻标识准确计算得到执行时长,并将每个调用方法和每个调用方法被调用的执行时长存储于存储数组中,以便于后续回溯发生异常情况的时间。
64.在本技术另一示例性实施例中,详细介绍了如何计算目标消息的执行时长,具体请参阅图7,图7是基于图1所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。该检测方法在图1所示s110之前还包括s710至s720,详细介绍如下:
65.s710:获取应用程序对应目标消息的打印起始时刻和打印结束时刻。
66.s720:根据打印起始时刻和打印结束时刻,计算得到目标消息的执行时长。
67.示例性地,目标消息为dispatchmessage,监测looper中自定义的printer所对应的“》》》》》dispatching to”和“《《《《《finished to”,即识别获取到的dispatchmessage的打印起始时刻和打印结束时刻,将打印结束时刻和打印起始时刻进行做差运算,计算得到的时长即为标消息的执行时长,例如打印结束时刻为10:08,打印起始时刻为10:00,则执行时长为8分钟。
68.本实施例提供了一种计算目标消息的执行时长的方式,根据目标消息的打印起始时刻和打印结束时刻,通过简单的数学公式快速计算得到目标消息的执行时长。
69.在本技术另一示例性实施例中,详细介绍了对存储数组中存储的调用方法进行更新处理的前置检测条件,具体请参阅图8,图8是基于图1至图3、图5、图7中任一所示示例性实施例示出的另一种异常调用方法的检测方法的流程示意图。该检测方法还包括s810至s820,详细介绍如下:
70.s810:检测存储数组中存储的调用方法的数量是否达到预设数量。
71.预设数量是预设参数,其单位通常为常数,本实施例并不对其具体单位进行限制。
72.s820:若达到,则对调用时刻最早的调用方法进行更新处理。
73.本实施例对存储数组的存储数量进行了限制,即存储数量的上限为预设数量,使得存储数组占用固定内存,不会过多侵占应用程序占用的宝贵内存。
74.示例性地,存储数组为native 10万循环数组,即该数组的存储调用方法的个数上限为10万,即本实施例中的预设数量为10万,若检测到存储数组中存储的调用方法的数量达到10万,则将其中存储的调用时刻最早的调用方法进行更新处理,更新为新进的调用方法。其中,具体更新处理过程为:删除调用时刻最早的调用方法,使得存储数组有空余存储空间,用于存储新的调用方法;或者,直接用新的调用方法覆盖存储数组中调用时刻最早的调用方法,以完成更新处理过程。
75.本实施例提供了一种存储数组更新处理的过程,通过检测到存储数组中存储的调用方法的数量达到预设数量,则对调用时刻最早的调用方法进行更新处理,以保证存储数组在存储空间无空余的时候,也能对其存储的调用方法进行实时更新。
76.在优选实施例中,如图9所示,图9是优选实施例中应用程序的改造过程的示意图。其中,首先将需要检测的应用程序a集成为trace(追踪)插件,当trace插件检测到应用程序a中发生卡顿时,将卡顿发生期间的函数调用栈写入到应用程序a存储的trace文件下,开发人员通过查看trace文件来定位应用程序a的问题代码,再进行后续优化。
77.当检测到应用程序a中dispatchmessage的执行时长超过1秒(本实施例预设时长),其中,执行时长是根据dispatchmessage的dispatchmessage start(打印起始时刻)和dispatchmessage end(打印结尾时刻)计算得到的时长,如图10所示,图10是示例性实施例示出的函数调用栈的截取过程的示意图。
78.在存储数组中获取执行时长内存储的函数调用栈,即执行时长内的多个调用方法,将获取的函数调用栈写入应用程序a存储的trace文件的私有目录下,方便应用程序开发者查阅,如图11所示,图11是示例性实施例示出的异常代码的定位示意图。其中,左边是函数调用栈文件,方框中可以看到fun_a耗时1299ms,已经发生卡顿,查看右边的源码进一步确认,发现fun_a本身耗时500ms,其中又调用了fun_b,fun_b耗时800ms,左右两边记录的耗时几乎相同,则可确认其为异常方法。
79.本实施例中异常方法的检测方法,在检测到应用程序对应目标消息的执行时长大于预设执行时长时,截取存储数组中执行时长内存储的函数调用栈,能直观地查询到该函数调用栈中的每个调用方法的耗时,同时可以准确定位到最高耗时的调用方法,应用开发者就可以快速找到卡顿的原因,进行代码的优化。
80.本技术的另一方面还提供了一种异常调用方法的检测装置,如图12所示,图12是本技术一示例性实施例示出的异常调用方法的检测装置的结构示意图。检测装置1200包括:
81.检测模块1210,用于检测应用程序对应目标消息的执行时长是否大于预设执行时长。
82.获取模块1230,用于若大于,则在存储数组中获取执行时长内存储的多个调用方法;其中,多个调用方法包括每个调用方法被调用的执行时长,存储数组是根据时间顺序存储调用方法的数组。
83.确定模块1250,用于根据每个调用方法被调用的执行时长确定出异常调用方法。
84.在一种可选的方式中,检测装置1200还包括:
85.第一遍历模块,用于遍历应用程序中的每个调用方法,并将遍历到的调用方法作为目标调用方法。
86.标记模块,用于对目标调用方法的起始位置和结尾位置进行标记操作,得到目标调用方法的目标起始位置标识和目标结尾位置标识,以得到所有调用方法的起始位置标识和结尾位置标识;其中,目标起始位置标识用于记录目标调用方法的起始调用时刻,目标结尾位置标识用于记录目标调用方法的结尾调用时刻。
87.在一种可选的方式中,目标起始位置标识包括目标调用方法的目标起始调用时刻标识和目标调用方法对应的目标类别标识,目标结尾位置标识包括目标调用方法的目标结尾调用时刻标识和目标类别标识。
88.标记模块进一步包括:插入单元,用于在目标调用方法的起始位置插入目标起始调用时刻标识和目标类别标识,并在目标调用方法的结尾位置插入目标结尾调用时刻标识和目标类别标识。
89.在一种可选的方式中,每个调用方法的起始位置标识包括起始调用时刻标识,每个调用方法的结尾位置标识包括结尾调用时刻标识。
90.检测装置1200还包括:
91.计算模块,用于在执行应用程序过程中,根据每个调用方法的起始调用时刻标识和结尾调用时刻标识,计算得到每个调用方法被调用的执行时长。
92.存储模块,用于将每个调用方法和每个调用方法被调用的执行时长存储于存储数组中。
93.在一种可选的方式中,检测装置1200还包括:
94.时刻获取模块,用于获取应用程序对应目标消息的打印起始时刻和打印结束时刻。
95.执行时长计算模块,用于根据打印起始时刻和打印结束时刻,计算得到目标消息的执行时长。
96.在一种可选的方式中,确定模块1250包括:
97.第二遍历模块,用于遍历每个调用方法,并将遍历到的调用方法作为目标调用方法。
98.执行时长检测模块,用于检测目标调用方法被调用的执行时长是否大于预设被调用的执行时长。
99.异常确定模块,用于若大于,则确定目标调用方法为异常调用方法。
100.在一种可选的方式中,检测装置1200还包括:
101.数量检测模块,用于检测存储数组中存储的调用方法的数量是否达到预设数量。
102.更新处理模块,用于若达到,则对调用时刻最早的调用方法进行更新处理。
103.本技术检测装置通过检测应用程序对应目标消息的执行时长是否大于预设执行时长;若大于,则在存储数组中获取执行时长内存储的多个调用方法;其中,多个调用方法包括每个调用方法被调用的执行时长,存储数组是根据时间顺序存储调用方法的数组;直接根据每个调用方法被调用的执行时长的大小,快速地确定出异常调用方法。
104.需要说明的是,上述实施例所提供的检测装置与前述实施例所提供的检测方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,这里不再赘述。
105.本技术的另一方面还提供了一种电子设备,包括:控制器;存储器,用于存储一个或多个程序,当一个或多个程序被控制器执行时,以执行上述的检测方法。
106.请参阅图13,图13是本技术的一示例性实施例示出的电子设备的计算机系统的结构示意图,其示出了适于用来实现本技术实施例的电子设备的计算机系统的结构示意图。
107.需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
108.如图13所示,计算机系统1300包括中央处理单元(central processing unit,cpu)1301,其可以根据存储在只读存储器(read-only memory,rom)1302中的程序或者从存储部分1308加载到随机访问存储器(random access memory,ram)1303中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在ram 1303中,还存储有系统操作所需的各种程序和数据。cpu 1301、rom 1302以及ram 1303通过总线1304彼此相连。输入/输出(input/output,i/o)接口1305也连接至总线1304。
109.以下部件连接至i/o接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声
器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至i/o接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
110.特别地,根据本技术的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(cpu)1301执行时,执行本技术的系统中限定的各种功能。
111.需要说明的是,本技术实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
112.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不相同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
113.描述于本技术实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
114.本技术的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,
该计算机程序被处理器执行时实现如前的检测方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
115.本技术的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的检测方法。
116.根据本技术实施例的一个方面,还提供了一种计算机系统,包括中央处理单元(central processing unit,cpu),其可以根据存储在只读存储器(read-only memory,rom)中的程序或者从存储部分加载到随机访问存储器(random access memory,ram)中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在ram中,还存储有系统操作所需的各种程序和数据。cpu、rom以及ram通过总线彼此相连。输入/输出(input/output,i/o)接口也连接至总线。
117.以下部件连接至i/o接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至i/o接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。
118.上述内容,仅为本技术的较佳示例性实施例,并非用于限制本技术的实施方案,本领域普通技术人员根据本技术的主要构思和精神,可以十分方便地进行相应的变通或修改,故本技术的保护范围应以权利要求书所要求的保护范围为准。
技术特征:
1.一种异常调用方法的检测方法,其特征在于,所述检测方法包括:检测应用程序对应目标消息的执行时长是否大于预设执行时长;若大于,则在存储数组中获取所述执行时长内存储的多个调用方法;其中,所述多个调用方法包括每个调用方法被调用的执行时长,所述存储数组是根据时间顺序存储调用方法的数组;根据每个调用方法被调用的执行时长确定出所述异常调用方法。2.根据权利要求1所述的检测方法,其特征在于,在所述检测应用程序对应目标消息的执行时长是否大于预设执行时长之前,所述检测方法进一步包括:遍历所述应用程序中的每个调用方法,并将遍历到的调用方法作为目标调用方法;对所述目标调用方法的起始位置和结尾位置进行标记操作,得到所述目标调用方法的目标起始位置标识和目标结尾位置标识,以得到所有调用方法的起始位置标识和结尾位置标识;其中,所述目标起始位置标识用于记录所述目标调用方法的起始调用时刻,所述目标结尾位置标识用于记录所述目标调用方法的结尾调用时刻。3.根据权利要求2所述的检测方法,其特征在于,所述目标起始位置标识包括所述目标调用方法的目标起始调用时刻标识和所述目标调用方法对应的目标类别标识,所述目标结尾位置标识包括所述目标调用方法的目标结尾调用时刻标识和所述目标类别标识;所述对所述目标调用方法的起始位置和结尾位置进行标记操作,得到所述目标调用方法的目标起始位置标识和目标结尾位置标识,进一步包括:在所述目标调用方法的起始位置插入所述目标起始调用时刻标识和所述目标类别标识,并在所述目标调用方法的结尾位置插入所述目标结尾调用时刻标识和所述目标类别标识。4.根据权利要求2所述的检测方法,其特征在于,每个调用方法的起始位置标识包括起始调用时刻标识,每个调用方法的结尾位置标识包括结尾调用时刻标识;所述检测方法还包括:在执行所述应用程序过程中,根据每个调用方法的起始调用时刻标识和结尾调用时刻标识,计算得到每个调用方法被调用的执行时长;将每个调用方法和每个调用方法被调用的执行时长存储于所述存储数组中。5.根据权利要求1所述的检测方法,其特征在于,在所述检测应用程序对应目标消息的执行时长是否大于预设执行时长之前,所述检测方法包括:获取应用程序对应目标消息的打印起始时刻和打印结束时刻;根据所述打印起始时刻和所述打印结束时刻,计算得到所述目标消息的执行时长。6.根据权利要求1至5中任一项所述的检测方法,其特征在于,所述根据每个调用方法被调用的执行时长确定出所述异常调用方法,进一步包括:遍历每个调用方法,并将遍历到的调用方法作为目标调用方法;检测所述目标调用方法被调用的执行时长是否大于预设被调用的执行时长;若大于,则确定所述目标调用方法为所述异常调用方法。7.根据权利要求1至5中任一项所述的检测方法,其特征在于,所述检测方法还包括:检测所述存储数组中存储的调用方法的数量是否达到预设数量;若达到,则对调用时刻最早的调用方法进行更新处理。
8.一种异常调用方法的检测装置,其特征在于,所述检测装置包括:检测模块,用于检测应用程序对应目标消息的执行时长是否大于预设执行时长;获取模块,用于若大于,则在存储数组中获取所述执行时长内存储的多个调用方法;其中,所述多个调用方法包括每个调用方法被调用的执行时长,所述存储数组是根据时间顺序存储调用方法的数组;确定模块,用于根据每个调用方法被调用的执行时长确定出所述异常调用方法。9.一种电子设备,其特征在于,包括:控制器;存储器,用于存储一个或多个程序,当一个或多个程序被控制器执行时,使得控制器实现权利要求1至7中任一项所述的检测方法。10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1至7中任一项所述的检测方法。
技术总结
本申请实施例涉及车辆技术领域,公开了一种异常调用方法的检测方法、装置及存储介质,方法包括:检测应用程序对应目标消息的执行时长是否大于预设执行时长;若大于,则在存储数组中获取执行时长内存储的多个调用方法;其中,多个调用方法包括每个调用方法被调用的执行时长,存储数组是根据时间顺序存储调用方法的数组;根据每个调用方法被调用的执行时长确定出异常调用方法。本申请直接从存储数组中获取每个调用方法被调用的执行时长,从而根据个调用方法被调用的执行时长的大小,快速地确定出异常调用方法。出异常调用方法。出异常调用方法。
技术研发人员:李洪 张克喜 许林
受保护的技术使用者:赛力斯汽车有限公司
技术研发日:2023.07.13
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
