程序运行的监控方法、装置、电子设备及存储介质与流程

文档序号:31703697发布日期:2022-10-01 09:46阅读:42来源:国知局
程序运行的监控方法、装置、电子设备及存储介质与流程

1.本技术涉及计算机技术,尤其涉及一种程序运行的监控方法、装置、电子设备及存储介质。


背景技术:

2.随着社会不断进步和信息技术的飞速发展,计算机应用已经渗透到现代社会生产生活的各个方面。软件作为计算机系统的灵魂,其规模和复杂性不断攀升,软件出现缺陷和失效的可能性不断增加。因此,需要对软件的程序进行监控和调试,保证程序的正常运行。
3.现有技术中,可以通过打印日志对程序进行监控,日志越详细越有助于对程序的问题进行定位。但是,打印日志会耗费一定的cpu时间,只能在非频繁处理分支的关键节点添加日志打印,在频繁处理分支添加日志打印会严重影响产品性能,对程序运行的监控效率和精度较低。


技术实现要素:

4.本技术提供一种程序运行的监控方法、装置、电子设备及存储介质,用以提高程序运行的监控效率和精度。
5.第一方面,本技术提供一种程序运行的监控方法,程序中包括至少一个程序分支,该方法包括:响应于程序运行的监控指令,确定程序的当前运行位置;若确定所述当前运行位置为所述程序中一个程序分支的起点,则确定与所述程序分支对应的预设的轨迹点;其中,所述轨迹点用于表示程序分支;对所述程序分支对应的轨迹点进行计数,得到所述程序分支对应的轨迹点的计数结果;其中,所述计数结果用于表示在对所述程序进行监控时,所述程序分支的运行次数。
6.第二方面,本技术提供一种程序运行的监控装置,程序中包括至少一个程序分支,该装置包括:位置确定模块,用于响应于程序运行的监控指令,确定程序的当前运行位置;轨迹点确定模块,用于若确定所述当前运行位置为所述程序中一个程序分支的起点,则确定与所述程序分支对应的预设的轨迹点;其中,所述轨迹点用于表示程序分支;轨迹点计数模块,用于对所述程序分支对应的轨迹点进行计数,得到所述程序分支对应的轨迹点的计数结果;其中,所述计数结果用于表示在对所述程序进行监控时,所述程序分支的运行次数。
7.第三方面,本技术提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如本技术第一方面所述的程序运行的监控方法。
8.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如本技术第一方面所述的程序运行的监控方法。
9.第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本技术第一方面所述的程序运行的监控方法。
10.本技术提供的一种程序运行的监控方法、装置、电子设备及存储介质,通过响应程序运行的监控指令,在程序运行的过程中,实时确定程序的当前运行位置。程序中包括多个程序分支,每个程序分支对应一个轨迹点,若当前运行位置为任意一个程序分支的起点,则对该程序分支的轨迹点进行计数,记录程序运行到该程序分支的次数,实现对程序运行过程的监控。解决了现有技术中,只能在非频繁处理分支添加日志打印所造成的无法获得频繁处理分支的监控信息的问题。通过对轨迹点进行计数,实现对整个程序的全面监控,了解程序持续执行的情况,减少对cpu的消耗,提高程序运行的监控效率和精度。
附图说明
11.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
12.图1为本技术实施例提供的一种程序运行的监控方法的流程示意图;图2为本技术实施例提供的程序中程序分支示意图;图3为本技术实施例提供的一种程序运行的监控方法的流程示意图;图4为本技术实施例提供的一种程序运行的监控方法的流程示意图;图5为本技术实施例提供的一种程序运行的监控装置的结构框图;图6为本技术实施例提供的一种程序运行的监控装置的结构框图;图7为本技术实施例提供的一种电子设备的结构框图;图8为本技术实施例提供的一种电子设备的结构框图。
13.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
14.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施例方式作进一步地详细描述。
15.应当明确,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
16.下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
17.在本技术的描述中,需要理解的是,术语“第一”、“第二”、“第三
ꢀ”
等仅用于区别类
似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。此外,在本技术的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
18.需要注意的是,由于篇幅所限,本技术说明书没有穷举所有可选的实施方式,本领域技术人员在阅读本技术说明书后,应该能够想到,只要技术特征不互相矛盾,那么技术特征的任意组合均可以构成可选的实施方式。下面对各实施例进行详细说明。
19.随着社会不断进步和信息技术的飞速发展,计算机应用已经渗透到现代社会生产生活的各个方面和各个领域。软件作为计算机系统的灵魂,由于越来越结合各个业务领域场景,自动化、智能化程度越来越高。软件系统的规模和复杂性不断攀升,软件出现缺陷和失效的可能性不断增加。
20.当前对软件程序的监控和调试手段有很多种,例如,可以借助于调试设备进行目标机的在线调试,对一些标准接口也会借助于示波器进行调试。还可以打印程序运行的日志来监控程序的运行情况,并对程序进行调试。打印日志可以应用在程序的运行环境,日志越详细越有助于问题的定位。然而,打印日志会耗费一定的cpu时间,所以只能在非频繁处理分支的关键节点添加日志打印,若在频繁处理分支添加日志打印,则会严重影响产品性能。
21.打印日志的方式可以对程序长期的运行做记录,监控运行状态,一定程度上可以帮助问题的定位。但是出于性能考虑,只能在关键节点且非频繁调用分支适用日志,无法对程序进行全面监控,监控精度较低。另外,在打印日志时,需要一定的时间成本,例如,需要格式化一定长度字符串时间,其中,字符串用于区分程序中不同的位置,还需要字符串流转和拷贝时间。打印日志会涉及业务线程将日志信息发送到日志管理线程、日志管理线程提取日志信息拷贝到缓存块里,以及待缓存块满了导入磁盘文件等操作,程序运行的监控效率较低。
22.本技术提供的一种程序运行的监控方法、装置、电子设备及存储介质,旨在解决现有技术的如上技术问题。
23.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
24.图1是根据本技术实施例提供的一种程序运行的监控方法的流程示意图,程序中包括至少一个程序分支,该方法由一种程序运行的监控装置执行。如图1所示,该方法包括以下步骤:s101、响应于程序运行的监控指令,确定程序的当前运行位置。
25.示例性地,用户可以指示程序进行运行,运行的程序可以是进程,也可以是线程,程序中可以包括多个程序分支。在程序运行后,用户可以发出监控指令,在程序运行的过程中,对程序进行监控。例如,可以监控程序中各个程序分支的运行进度。程序中的程序分支可以是各个选择分支,也可以是对顺序结构的程序进行划分,得到多个程序分块,每个程序分块可以作为一个程序分支。
26.对程序运行的监控可以依赖于cli(command line interface,命令行界面)系统,用户可以通过cli系统发出监控指令,并对程序运行的情况进行查看。用户在发出监控指令后,响应到监控指令,可以实时或定时地确定程序的当前运行位置。当前运行位置可以是指程序当前运行到的程序代码语句,例如,程序当前运行到第二句程序代码,则当前运行位置为第二句程序代码的位置。可以记录程序运行到各个当前运行位置的时间,例如,在接收到监控指令后的第0.01秒时,当前运行位置为程序的第二句代码;在接收到监控指令后的第0.02秒时,当前运行位置为程序的第十句代码。
27.也可以对程序中的每句代码进行编号,在对程序进行监控时,确定当前所运行到的程序的编号,根据编号确定程序的当前运行位置。
28.s102、若确定当前运行位置为程序中一个程序分支的起点,则确定与程序分支对应的预设的轨迹点;其中,轨迹点用于表示程序分支。
29.示例性地,预先确定程序中的各个程序分支,并确定程序分支中的程序代码语句。从每个程序分支中确定一句或多句程序代码语句作为该程序分支的起点,即,若程序运行到一个程序分支的起点所对应的程序代码语句,则认为程序已运行到该程序分支。
30.将各程序分支作为程序的轨迹点,程序运行的过程可以是经过各轨迹点的过程。可以根据预设的轨迹点对程序分支进行标识,轨迹点可以是以字符或字符串的形式进行表示。例如,轨迹点以小写英文字母表示,程序中包括三个程序分支,分别为分支一、分支二和分支三,则分支一对应的轨迹点可以是a,分支二对应的轨迹点可以是b,分支三对应的轨迹点可以是c。图2为程序中程序分支示意图。图2中包括三个程序分支,分支一的轨迹点可以由“tp0”表示,分支二的轨迹点可以由“tp1”表示,分支三的轨迹点可以由“tp2”表示。
31.在得到当前运行位置后,根据预设的各个程序分支的起点,确定当前运行位置是否为其中任意一个程序分支的起点。若是,则确定程序已运行到该程序分支。根据当前运行位置,确定程序当前所运行到的程序分支,获取与该程序分支对应的轨迹点,由轨迹点表示当前运行到的程序分支。
32.本实施例中,确定当前运行位置为程序中一个程序分支的起点,包括:若确定程序当前运行到程序中的一个程序分支的第一句程序代码,则确定程序的当前运行位置为程序中一个程序分支的起点。
33.具体的,只要程序运行到了一个程序分支中的第一句程序代码,则认为程序运行到了该程序分支。因此,可以将各程序分支中的第一句程序代码,作为各程序分支的起点。在得到当前运行位置后,确定当前运行位置是否为任意一个程序分支中的第一句程序代码,若是,则确定程序运行到该程序分支的起点,可以确定该程序分支对应的轨迹点。
34.可以实时得到当前运行位置,每得到一个当前运行位置,就将当前运行位置的程序代码与各个程序分支的第一句程序代码进行比较,及时确定程序是否运行到了各个程序分支。还可以将各个分支的前两句代码确定为各程序分支的起点,若程序运行到程序分支的第一句程序代码时,没有判断出程序运行到该程序分支,还可以在当前运行位置为第二句程序代码时,通过该程序分支中第二句程序代码进行判断,确定程序运行到该程序分支,避免第一句程序代码的判断失误所造成的程序分支确定错误的问题,有效提高程序分支的确定精度。
35.这样设置的有益效果在于,在程序运行到程序分支的第一句时,就可以确定程序
运行到了程序分支,提高程序分支的确定效率,进而提高轨迹点的确定效率,有助于对程序运行的实时监控。
36.本实施例中,确定与程序分支对应的预设的轨迹点,包括:根据预设的程序分支与轨迹点的关联关系,确定与当前运行位置所在的程序分支对应的轨迹点。
37.具体的,预先为程序分支设置轨迹点,并设置轨迹点与程序分支之间的关联关系,一个程序分支对应唯一的轨迹点。在确定程序当前所运行到的程序分支后,根据预设的各程序分支与轨迹点之间的关联关系,确定当前所运行到的程序分支所对应的轨迹点,即,确定当前运行位置所在的程序分支对应的轨迹点。
38.可以先设置程序代码语句与程序分支的关联关系,根据当前运行位置所在的程序代码语句,确定程序分支。再根据程序分支与轨迹点的关联关系,确定该程序分支所对应的轨迹点。
39.这样设置的有益效果在于,通过预设的关联关系,可以快速准确地得到轨迹点,便于对程序的运行情况进行统计,提高程序监控的效率和精度。
40.s103、对程序分支对应的轨迹点进行计数,得到程序分支对应的轨迹点的计数结果;其中,计数结果用于表示在对程序进行监控时,程序分支的运行次数。
41.示例性地,在内存中预先为每个轨迹点分配一个计数空间,计数空间中可以用于存放程序运行到各个程序分支的次数。在程序运行到一个程序分支时,就对该程序分支的轨迹点进行运行次数的计数,得到该程序分支对应的轨迹点的计数结果。即,计数结果可以用于表示在对程序进行监控时,运行到各程序分支的运行次数。例如,程序中包括分支一、分支二和分支三,分支一对应的轨迹点为a,分支二对应的轨迹点为b,分支三对应的轨迹点为c。程序中的分支一、分支二和分支三依次运行,程序已经运行过两遍,当前又运行到了分支一,则轨迹点a的计数结果为3,轨迹点b和轨迹点c的计数结果为2。
42.本实施例中,在得到程序分支对应的轨迹点的计数结果之后,还包括:确定内存中预先为程序分配的目标内存空间,将计数结果存储在目标内存空间中。
43.具体的,预先对内存进行划分,得到多个内存空间,为每个程序分配一块内存空间,例如,可以为每个线程或进程分配内存空间,使各个线程或进程可以将自己的监控信息存储在对应的内存空间中。其中,监控信息可以是计数结果等。
44.预先为程序分配内存空间,在得到程序中任一轨迹点的计数结果后,确定内存中为该程序分配的内存空间,作为目标内存空间,并将计数结果存储在目标内存空间中,便于后续进行查看。
45.还可以在程序对应的内存空间中,为各个轨迹点分配计数空间,每个轨迹点对应的计数空间中可以包括4字节或8字节的计数结果。在得到计数结果后,可以确定计数结果所对应的轨迹点的计数空间,将计数结果存储在该计数空间中。对于多进程场景,可以利用进程间共享内存技术,使多进程之间可以访问彼此的计数结果等监控信息,便于用户对计数结果进行快速查看。
46.这样设置的有益效果在于,通过预先分配内存,便于对程序的监控信息进行有序统计,避免信息混乱,提高监控效率和精度。
47.本实施例中,对程序分支对应的轨迹点进行计数,得到程序分支对应的轨迹点的计数结果,包括:确定程序分支对应的轨迹点的当前计数的数值;对当前计数的数值加一,
得到程序分支对应的轨迹点的计数结果。
48.具体的,在程序运行到一个程序分支时,确定该程序分支对应的轨迹点。从内存中该轨迹点的计数空间中获取当前所存储的计数结果,得到该轨迹点所对应的程序分支已经被运行过的次数,轨迹点对应的当前所存储的计数结果即为该轨迹点的当前计数的数值。例如,轨迹点对应的程序分支已经运行过两次,则该轨迹点的当前计数的数值可以为2。
49.对程序分支对应的轨迹点进行计数,可以是对该轨迹点的当前计数的数值加一,得到该轨迹点的计数结果。例如,获取到当前计数的数值为2,对2进行加一,得到计数结果为3。即,每运行到一个程序分支,就对该程序分支对应的轨迹点的计数加一,实现对各程序分支的运行次数进行实时确定。
50.这样设置的有益效果在于,跟踪一个轨迹点,只需要把对应的轨迹点的计数值加一即可,性能远远高于日志打印,适用于频繁调用分支及细粒度运行轨迹的跟踪。
51.本技术实施例提供的一种程序运行的监控方法,通过响应程序运行的监控指令,在程序运行的过程中,实时确定程序的当前运行位置。程序中包括多个程序分支,每个程序分支对应一个轨迹点,若当前运行位置为任意一个程序分支的起点时,则对该程序分支的轨迹点进行计数,记录程序运行到该程序分支的次数,实现对程序运行过程的监控。解决了现有技术中,只能在非频繁处理分支添加日志打印所造成的无法获得频繁处理分支的监控信息的问题。通过对轨迹点进行计数,实现对整个程序的全面监控,了解程序持续执行的情况,减少对cpu的消耗,提高程序运行的监控效率和精度。
52.图3为本技术实施例提供的一种程序运行的监控方法的流程示意图,该实施例是在上述实施例基础上的可选实施例。
53.本实施例中,在得到程序分支对应的轨迹点的计数结果之后,可追加:响应于计数查询指令,确定程序中各轨迹点的当前的计数结果;若存在不满足预设数值要求的计数结果,则将不满足预设数值要求的计数结果所对应的轨迹点确定为故障点;将故障点对应的程序分支确定为异常分支,显示异常分支,并提示用户进行查看。
54.如图3所示,该方法包括以下步骤:s301、响应于程序运行的监控指令,确定程序的当前运行位置。
55.示例性地,本步骤可以参见上述步骤s101,不再赘述。
56.s302、若确定当前运行位置为程序中一个程序分支的起点,则确定与程序分支对应的预设的轨迹点;其中,轨迹点用于表示程序分支。
57.示例性地,本步骤可以参见上述步骤s102,不再赘述。
58.s303、对程序分支对应的轨迹点进行计数,得到程序分支对应的轨迹点的计数结果;其中,计数结果用于表示在对程序进行监控时,程序分支的运行次数。
59.示例性地,本步骤可以参见上述步骤s103,不再赘述。
60.s304、响应于计数查询指令,确定程序中各轨迹点的当前的计数结果。
61.示例性地,在对程序进行监控的过程中,用户可以随时发出计数查询指令,对程序中各轨迹点的当前的计数结果进行查询。在响应到计数查询指令后,从内存中分配给程序的内存空间中,获取该程序中各轨迹点的当前的计数结果。当前的计数结果是指内存空间中所存储的最新更新的计数结果。可以通过计数查询指令,查询到程序中所有轨迹点的当前的计数结果。
62.还可以针对程序中一个或多个程序分支发出计数查询指令,例如,用户可以在可视化界面上选定分支一,只对分支一发出计数查询指令。在响应到用户针对某个程序分支的计数查询指令后,可以从该程序分支对应的计数空间中只获取该程序分支的轨迹点的当前计数结果,实现对程序分支或对轨迹点的精准查询。
63.s305、若存在不满足预设数值要求的计数结果,则将不满足预设数值要求的计数结果所对应的轨迹点确定为故障点。
64.示例性地,预先设置数值要求,数值要求是程序正常运行时,计数结果需要满足的要求。若计数结果不满足预设的数值要求,则可以认为计数结果存在问题,该计数结果所对应的程序分支可能出现故障。
65.将各轨迹点当前的计数结果与预设数值要求进行比较,确定各轨迹点当前的计数结果是否满足预设数值要求,即,确定是否存在不满足预设数值要求的计数结果。若存在不满足预设数值要求的计数结果,则将不满足预设数值要求的计数结果所对应的轨迹点确定为故障点。例如,获取到程序中各轨迹点的当前的计数结果分别为2、2、10,预设数值要求是轨迹点计数结果不能超过5,则可以确定计数结果为10的轨迹点为故障点。若不存在不满足数值要求的计数结果,即所有轨迹点的计数结果均满足数值要求,则确定程序没有问题,可以继续运行。
66.本实施例中,若存在不满足预设数值要求的计数结果,则将不满足预设数值要求的计数结果所对应的轨迹点确定为故障点,包括:根据预设的轨迹点与数值要求之间的关联关系,确定与各轨迹点对应的预设数值要求;将各轨迹点的计数结果与对应的预设数值要求进行比较;若各轨迹点的计数结果不满足预设数值要求,则确定轨迹点为故障点。
67.具体的,对于不同的程序分支或轨迹点,可以预设有不同的数值要求。例如,分支一所对应的轨迹点的数值要求为计数结果只能是0,分支二所对应的轨迹点的数值要求为计数结果不能为0。预先将各轨迹点与数值要求进行关联存储。
68.在得到轨迹点的当前的计数结果后,根据预设的轨迹点与数值要求之间的关联关系,获取与该轨迹点对应的数值要求。将轨迹点当前的计数结果与对应的预设数值要求进行比较,判断轨迹点当前的计数结果是否满足该数值要求。若各轨迹点的计数结果不满足预设数值要求,则确定该轨迹点为故障点;若各轨迹点的计数结果满足预设数值要求,则确定该轨迹点没有问题。
69.这样设置的有益效果在于,通过设置各轨迹点的数值要求,可以对各轨迹点进行精确监控,提高程序运行时的监控精度。
70.s306、将故障点对应的程序分支确定为异常分支,显示异常分支,并提示用户进行查看。
71.示例性地,若存在故障点,则将故障点所对应的程序分支确定为异常分支,即,监控到程序中存在异常。可以将异常分支显示在界面上,提示用户进行查看和改进。在确定异常分支后,还可以确定出现异常的原因,将出现异常的原因提示给用户。例如,程序中存在一个程序分支,若程序运行到该程序分支,则说明程序的输入参数存在缺失。当该程序分支对应的计数结果大于0时,则认为程序运行到了该程序分支,并可以确定程序存在问题的原因是输入参数存在缺失。即,可以预先设定运行到各程序分支时,程序出现的问题的异常原因。在向用户进行提示时,获取与异常分支关联的异常原因,可以直接展示异常原因,减少
用户工作量,提高程序的调试效率。
72.通过计数结果的查询,可以获取各个线程和/或进程的各个轨迹点的监控信息,了解程序的运行情况,以及监控进入异常分支的频度,有助于持续优化及问题定位。
73.本技术实施例提供的一种程序运行的监控方法,通过响应程序运行的监控指令,在程序运行的过程中,实时确定程序的当前运行位置。程序中包括多个程序分支,每个程序分支对应一个轨迹点,若当前运行位置为任意一个程序分支的起点时,则对该程序分支的轨迹点进行计数,记录程序运行到该程序分支的次数,实现对程序运行过程的监控。解决了现有技术中,只能在非频繁处理分支添加日志打印所造成的无法获得频繁处理分支的监控信息的问题。通过对轨迹点进行计数,实现对整个程序的全面监控,了解程序持续执行的情况,减少对cpu的消耗,提高程序运行的监控效率和精度。
74.图4为本技术实施例提供的一种程序运行的监控方法的流程示意图,该实施例是在上述实施例基础上的可选实施例。
75.本实施例中,确定程序的当前运行位置,可细化为:获取在预设的故障定位时间周期内,至少两次程序的当前运行位置。
76.在获取在预设的故障定位时间周期内,至少两次程序的当前运行位置之后,可追加:若至少两次程序的当前运行位置相同,则确定程序发生故障,并确定发生故障的位置为当前运行位置。
77.如图4所示,该方法包括以下步骤:s401、响应于程序运行的监控指令,获取在预设的故障定位时间周期内,至少两次程序的当前运行位置。
78.示例性地,在响应到程序运行的监控指令后,可以自动获取多个当前运行位置,也可以由用户发出位置获取指令,再获取多个当前运行位置。预先设置故障定位时间周期,故障定位时间周期是判断程序运行是否出现故障的时间周期,例如,故障定位时间周围为15分钟,则可以在15分钟内,获取多个当前运行位置。例如,在第5分钟获取一次,在第10分钟获取一次,在第15分钟内获取一次。可以在预设的故障定位时间周期内,随机获取多个当前运行位置。即,在故障定位时间周期内,连续执行多次当前运行位置的查询。
79.可以由用户发出位置获取指令,在响应到位置获取指令后,连续获取多个实时的当前运行位置。也可以每接收到一次位置获取指令就获取一个实时的当前运行位置,用户连续发出多个位置获取指令,得到多个当前运行位置。
80.s402、若至少两次程序的当前运行位置相同,则确定程序发生故障,并确定发生故障的位置为当前运行位置。
81.示例性地,在得到多个当前运行位置后,将多个当前运行位置进行比较,确定多个当前运行位置是否为同一个位置。若多个当前运行位置不同,则认为程序正在正常运行;若多个当前运行位置相同,则认为程序停滞不前,程序发生故障,并确定发生故障的位置为当前运行位置。也就是说,连续执行多次的位置查询便可以看出程序是否挂住,并能明确挂在位置,配合代码走查可以很容易定位程序问题,实现对现场挂住的问题做有效定位,而且通过查看轨迹点的位置可以了解程序的执行情况,有助于程序持续优化。
82.本实施例中,s401可以s102之前或之后执行,也可以在s103之前或之后执行,s402只要能在s401之后执行即可。
83.本技术实施例提供的一种程序运行的监控方法,通过响应程序运行的监控指令,在程序运行的过程中,实时确定程序的当前运行位置。程序中包括多个程序分支,每个程序分支对应一个轨迹点,若当前运行位置为任意一个程序分支的起点时,则对该程序分支的轨迹点进行计数,记录程序运行到该程序分支的次数,实现对程序运行过程的监控。解决了现有技术中,只能在非频繁处理分支添加日志打印所造成的无法获得频繁处理分支的监控信息的问题。通过对轨迹点进行计数,实现对整个程序的全面监控,了解程序持续执行的情况,减少对cpu的消耗,提高程序运行的监控效率和精度。
84.图5为本技术实施例提供的一种程序运行的监控装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。程序中包括至少一个程序分支。参照图5,该装置包括:位置确定模块501、轨迹点确定模块502和轨迹点计数模块503。
85.位置确定模块501,用于响应于程序运行的监控指令,确定程序的当前运行位置;轨迹点确定模块502,用于若确定所述当前运行位置为所述程序中一个程序分支的起点,则确定与所述程序分支对应的预设的轨迹点;其中,所述轨迹点用于表示程序分支;轨迹点计数模块503,用于对所述程序分支对应的轨迹点进行计数,得到所述程序分支对应的轨迹点的计数结果;其中,所述计数结果用于表示在对所述程序进行监控时,所述程序分支的运行次数。
86.图6为本技术实施例提供的一种程序运行的监控装置的结构框图,在图5所示实施例的基础上,如图6所示,轨迹点计数模块503包括当前数值确定单元5031和计数结果确定单元5032。
87.当前数值确定单元5031,用于确定所述程序分支对应的轨迹点的当前计数的数值;计数结果确定单元5032,用于对所述当前计数的数值加一,得到所述程序分支对应的轨迹点的计数结果。
88.一个示例中,轨迹点确定模块502,包括:起点确定单元,用于若确定所述程序当前运行到所述程序中的一个程序分支的第一句程序代码,则确定所述程序的当前运行位置为所述程序中一个程序分支的起点。
89.一个示例中,轨迹点确定模块502,包括:轨迹点查找单元,用于根据预设的程序分支与轨迹点的关联关系,确定与所述当前运行位置所在的程序分支对应的轨迹点。
90.一个示例中,该装置还包括:计数查询模块,用于在得到所述程序分支对应的轨迹点的计数结果之后,响应于计数查询指令,确定所述程序中各轨迹点的当前的计数结果;故障点确定模块,用于若存在不满足预设数值要求的计数结果,则将所述不满足预设数值要求的计数结果所对应的轨迹点确定为故障点;异常分支确定模块,用于将所述故障点对应的程序分支确定为异常分支,显示所述异常分支,并提示用户进行查看。
91.一个示例中,故障点确定模块,具体用于:根据预设的轨迹点与数值要求之间的关联关系,确定与各轨迹点对应的预设数值
要求;将各轨迹点的计数结果与对应的预设数值要求进行比较;若各轨迹点的计数结果不满足预设数值要求,则确定所述轨迹点为故障点。
92.一个示例中,该装置还包括:计数结果存储模块,用于在得到所述程序分支对应的轨迹点的计数结果之后,确定内存中预先为所述程序分配的目标内存空间,将所述计数结果存储在所述目标内存空间中。
93.一个示例中,位置确定模块501,具体用于:获取在预设的故障定位时间周期内,至少两次所述程序的当前运行位置。
94.一个示例中,该装置还包括:故障定位模块,用于在获取在预设的故障定位时间周期内,至少两次所述程序的当前运行位置之后,若至少两次所述程序的当前运行位置相同,则确定所述程序发生故障,并确定发生故障的位置为所述当前运行位置。
95.图7为本技术实施例提供的一种电子设备的结构框图,如图7所示,电子设备包括:存储器71,处理器72;存储器71;用于存储处理器72可执行指令的存储器。
96.其中,处理器72被配置为执行如上述实施例提供的方法。
97.电子设备还包括接收器73和发送器74。接收器73用于接收其他设备发送的指令和数据,发送器74用于向外部设备发送指令和数据。
98.图8是根据一示例性实施例示出的一种电子设备的框图,该设备可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
99.设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/ o)接口812,传感器组件814,以及通信组件816。
100.处理组件802通常控制设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
101.存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
102.电源组件806为设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为设备800生成、管理和分配电力相关联的组件。
103.多媒体组件808包括在所述设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏
幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
104.音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
105.i/ o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
106.传感器组件814包括一个或多个传感器,用于为设备800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为设备800的显示器和小键盘,传感器组件814还可以检测设备800或设备800一个组件的位置改变,用户与设备800接触的存在或不存在,设备800方位或加速/减速和设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
107.通信组件816被配置为便于设备800和其他设备之间有线或无线方式的通信。设备800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
108.在示例性实施例中,设备800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
109.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由设备800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
110.一种非临时性计算机可读存储介质,当该存储介质中的指令由终端设备的处理器执行时,使得终端设备能够执行上述终端设备的程序运行的监控方法。
111.本技术还公开了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本实施例中所述的方法。
112.本技术以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电
路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
113.用于实施本技术的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或电子设备上执行。
114.在本技术的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
115.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
116.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据电子设备)、或者包括中间件部件的计算系统(例如,应用电子设备)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
117.计算机系统可以包括客户端和电子设备。客户端和电子设备一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-电子设备关系的计算机程序来产生客户端和电子设备的关系。电子设备可以是云电子设备,又称为云计算电子设备或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称 "vps")中,存在的管理难度大,业务扩展性弱的缺陷。电子设备也可以为分布式系统的电子设备,或者是结合了区块链的电子设备。应
该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本技术中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本技术公开的技术方案所期望的结果,本文在此不进行限制。
118.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
119.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1