发明内容
本发明实施例所要解决的技术问题在于,提供一种程序分析方法、系统,客户端及服务器端,可对程序运行过程中出现的故障情况进行记录、分析和处理,程序分析过程简单、高效,且有利于程序的改进。
为了解决上述技术问题,本发明实施例提供了一种程序分析方法,包括:
客户端记录程序运行的非预期代码分支,并将记录结果上报至服务器端;
所述服务器端根据预设的非预期代码分支与故障的对应关系,解析所述记录结果,获得所述程序运行过程中出现的故障情况。
其中,所述客户端记录程序运行的非预期代码分支,并将记录结果上报至服务器端,包括:
当程序运行任一非预期代码分支时,客户端在位段中将所述非预期代码分支对应的位进行标记,所述位段包括至少一个位,其中每一位对应于所述程序的唯一一个非预期代码分支;
当所述程序运行结束后,所述客户端将所述位段上报至服务器端。
其中,所述服务器端根据预设的非预期代码分支与故障的对应关系,解析所述记录结果,获得所述程序运行过程中出现的故障情况,包括:
服务器端接收并解析所述客户端上报的位段,确定所述位段中各个标记位对应的非预期代码分支;
所述服务器端根据预设的非预期代码分支与故障的对应关系,获得各个非预期代码分支对应的故障;
所述服务器端根据各个非预期代码分支对应的故障,获得所述程序运行过程中出现的故障情况。
其中,所述服务器端根据预设的非预期代码分支与故障的对应关系,解析所述记录结果,获得所述程序运行过程中出现的故障情况之后,还包括:
所述服务器端根据所述程序运行过程中出现的故障情况,生成所述程序的预警变化信息;
所述服务器端输出所述预警变化信息。
相应地,本发明实施例还提供了一种客户端,包括:
记录单元,用于记录程序运行的非预期代码分支;
上报单元,用于将所述记录单元的记录结果上报至服务器端。
其中,所述记录单元用于当程序运行任一非预期代码分支时,在位段中将所述非预期代码分支对应的位进行标记,所述位段包括至少一个位,其中每一位对应于所述程序的唯一一个非预期代码分支;
所述上报单元当所述程序运行结束后,将所述记录单元标记后的位段上报至服务器端。
相应地,本发明实施例还提供了一种服务器端,包括:
接收模块,用于接收客户端上报的记录结果;
故障分析模块,用于根据预设的非预期代码分支与故障的对应关系,解析所述接收模块接收的记录结果,获得所述程序运行过程中出现的故障情况。
其中,所述接收模块接收客户端上报的位段;所述故障分析模块包括:
解析单元,用于解析所述接收模块接收的位段,确定所述位段中各个标记位对应的非预期代码分支;
故障确定单元,用于根据预设的非预期代码分支与故障的对应关系,获得所述解析单元得到的各个非预期代码分支对应的故障;
分析单元,用于根据所述故障确定单元得到的各个非预期代码分支对应的故障,获得所述程序运行过程中出现的故障情况。
其中,所述服务器端还包括:
预警生成模块,用于根据所述程序运行过程中出现的故障情况,生成所述程序的预警变化信息;
输出模块,用于输出所述预警生成模块生成的预警变化信息。
相应地,本发明实施例还提供了一种程序分析系统,包括服务器端及至少一个客户端,其中:
所述客户端,用于记录程序运行的非预期代码分支,并将记录结果上报至所述服务器端;
所述服务器端,用于接收所述客户端上报的记录结果,并根据预设的非预期代码分支与故障的对应关系,解析所述记录结果,获得所述程序运行过程中出现的故障情况。
实施本发明实施例,具有如下有益效果:
1、本发明实施例的客户端记录程序运行的非预期代码分支,并将记录结果上报至服务器端,由服务器端根据预设的非预期代码分支与故障的对应关系,获得程序运行过程中出现的故障情况,这种全流程故障记录、汇总上报的分析方式,简单、高效,有利于掌握程序的整体工作状态和工作过程中出现的故障(细节),便于程序开发者即时改进程序,即时调整程序的发布策略。
2、本发明实施例的服务器端根据分析得到的程序运行过程中出现的故障情况,生成预警变化信息并输出,可使程序开发者能够即时改进程序,提高用户对程序的使用体验。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,为本发明的程序分析系统的实施例的结构示意图;所述系统包括:至少一个客户端10(图中仅对其一进行标号),服务器端20。
所述客户端10,用于记录程序运行的非预期代码分支,并将记录结果上报至所述服务器端20。
具体实现中,所述客户端10为连接于服务器端20的所有客户端,图1中仅示出三个,实际应用中并不限于三个。该客户端10包括但不限于:电脑、智能手机、PDA(Personal Digital Assistant,掌上电脑)、IPAD等终端。所述客户端10可采用位段的方式记录程序运行的非预期代码分支,其中,非预期代码分支指针对程序运行过程中可能出现的故障情况而开发的程序代码。实际应用中,程序一般包括预期代码分支和非预期代码分支,非预期代码分支使得程序在面对故障时依然可以基本运行,其体现了程序面对故障时的处理能力。其中,位段是指以位为最小单位的数据结构,所述位段包括至少一个位。
具体请一并参见图2,为本发明的位段的实施例的结构示意图,图2中设定位段大小为1KB,总共包含32000位,对应32000个非预期代码分支。预先将程序的所有非预期代码分支与位段中的位一一对应,比如:某程序的第一段非预期代码分支与位段中的第一位相对应, 该程序的第二段非预期代码分支与位段中的第二位相对应,该程序的第N段非预期代码分支与位段中的第N位相对应;当程序运行了第一段非预期代码分支,所述客户端10即将位段中的第一位进行标记;当程序运行了第四段非预期代码分支,所述客户端10即将位段中的第四位进行标记(请参见图2)。所述客户端10采用按位标记方式,将程序运行的所有非预期代码分支均进行标记,最后在程序运行结束后,将位段上报至所述服务器端20。
需要说明的是,所述客户端10采用位段方式记录时,程序与位段可一一对应,也可采用一个位段对应需要分析的所有程序;另外,程序运行结束可以指程序运行完成,也可以指程序出现异常无法运行而结束。
可以理解的是,所述客户端10采用位段的方式记录程序运行非预期代码分支仅为举例,其他情况,比如:若程序运行过程中出现的非预期代码分支较少,则可直接对非预期代码分支进行记录,然后汇总记录结果上报至所述服务器端20;再如:所述客户端10可采用位置信息记录非预期代码分支,如:非预期代码分支位于程序的多少行,等等,然后汇总记录结果上报至所述服务器端20;上述其他情况下可类似分析,在此不赘述。
所述服务器端20,用于接收所述客户端10上报的记录结果,并根据预设的非预期代码分支与故障的对应关系,解析所述记录结果,获得所述程序运行过程中出现的故障情况。
所述服务器端20接收所述客户端10上报的记录结果,以位段为例,所述服务器端20首先接收所述客户端10上报的位段,并解析所述位段中各个标记位,确定每个标记位对应的程序运行的非预期代码分支,然后根据预设的非预期代码分支与故障的对应关系,获得所述程序运行过程中出现的故障情况。具体实现中,每一个非预期代码分支均对应相应的故障,比如:硬盘写程序的预期分支为:硬盘写操作成功;该程序的非预期代码分支为:硬盘写操作失败;当程序运行了硬盘写程序的非预期代码分支,则表明该程序运行过程中出现了“硬盘写操作失败”的故障,所述服务器端20解析出该非预期代码分支后,即根据预设的非预期代码分支与故障的对应关系,确认所述硬盘写操作程序运行过程中出现了“硬盘写操作失败”的故障。需要说明的是,非预期代码分支与故障的对应关系在程序编写过程中预先设定,每一个非预期代码分支的出现即表示程序运行过程中出现了相应的故障,所述服务器端20通过解析客户端10上报的位段,获得所述程序运行过程中出现的整体故障情况(即整个细节)。
本发明实施例可对程序运行过程中出现的故障情况进行记录、分析和处理,程序分析过程简单、高效,且有利于程序的改进。
为了更清楚地说明本发明,下面将对本发明的客户端进行详细介绍。
请参见图3,为本发明的客户端的实施例的结构示意图;所述客户端10包括:
记录单元101,用于记录程序运行的非预期代码分支。
具体实现中,所述记录单元101可采用位段的方式记录程序运行的非预期代码分支,所述位段包括至少一个位,其中每一位对应于所述程序的唯一一个非预期代码分支。具体请一并参见图2。预先将程序的所有非预期代码分支与位段中的位一一对应,比如:某程序的第一段非预期代码分支与位段中的第一位相对应, 该程序的第二段非预期代码分支与位段中的第二位相对应,该程序的第N段非预期代码分支与位段中的第N位相对应;当程序运行了第一段非预期代码分支,所述记录单元101即将位段中的第一位进行标记;当程序运行了第四段非预期代码分支,所述记录单元101即将位段中的第四位进行标记(请参见图2)。所述记录单元101采用按位标记方式,将程序运行的所有非预期代码分支均进行标记。
需要说明的是,所述记录单元101采用位段方式记录时,程序与位段可一一对应,也可采用一个位段对应需要分析的所有程序。
上报单元102,用于将所述记录单元101的记录结果上报至服务器端。
所述上报单元102当所述程序运行结束后,将所述记录单元101记标记后的位段上报至服务器端,此处,程序运行结束可以指程序运行完成,也可以指程序出现异常无法运行而结束。
可以理解的是,所述记录单元101采用位段的方式记录程序运行非预期代码分支仅为举例,其他情况,比如:若程序运行过程中出现的非预期代码分支较少,所述记录单元101可直接对非预期代码分支进行记录,然后汇总记录结果由所述上报单元102上报至所述服务器端20;再如:所述记录单元101可采用位置信息记录非预期代码分支,如:非预期代码分支位于程序的多少行,等等,然后汇总记录结果由所述上报单元102上报至所述服务器端20;上述其他情况下可类似分析,在此不赘述。
本发明实施例可对程序运行过程中出现的故障情况进行记录、上报,有利于程序的分析处理和改进。
为了更清楚地说明本发明,下面将对本发明的服务器端进行详细介绍。
请参见图4,为本发明的服务器端的第一实施例的结构示意图;所述服务器端20包括:
接收模块201,用于接收客户端10上报的记录结果。具体实现中,根据所述客户端10对程序运行的非预期代码分支所采用的记录方式,所述接收模块201接收到的所述客户端10上报的记录结果可以为位段,还可以为非预期代码分支的直接汇总结果,或者是非预期代码分支的位置信息记录等等。
故障分析模块202,用于根据预设的非预期代码分支与故障的对应关系,解析所述接收模块201接收的所述记录结果,获得所述程序运行过程中出现的故障情况。
所述故障分析模块202首先解析所述接收模块201接收的位段中各个标记位,确定每个标记位对应的程序运行的非预期代码分支,然后根据预设的非预期代码分支与故障的对应关系,获得所述程序运行过程中出现的故障情况。具体实现中,每一个非预期代码分支均对应相应的故障,比如:硬盘写程序的预期分支为:硬盘写操作成功,其非预期代码分支为:硬盘写操作失败;当程序运行了硬盘写程序的非预期代码分支,则程序出现了“硬盘写操作失败”的故障,所述故障分析模块202解析出该非预期代码分支后,即根据预设的非预期代码分支与故障的对应关系,确认所述程序运行过程中出现了“硬盘写操作失败”的故障。需要说明的是,非预期代码分支与故障的对应关系在程序编写过程中预先设定,每一个非预期代码分支的出现即表示程序运行过程中出现了相应的故障。
本发明实施例可对程序运行过程中出现的故障情况进行分析和处理,程序分析过程简单、高效,有利于程序的改进。
请参见图5,为本发明的服务器端的第二实施例的结构示意图;与上一实施例相同,所述服务器端20包括:接收模块201和故障分析模块202。本实施例中,所述服务器端20还包括:
预警生成模块203,用于根据所述程序运行过程中出现的故障情况,生成所述程序的预警变化信息。
具体实现中,所述预警变化信息可以为所述程序运行过程中的各个故障出现次数的排行。由于各个客户端10均向服务器端20上报了记录结果,所述服务器端20通过故障分析得到各个客户端10的程序运行过程中出现的故障情况,所述预警生成模块203根据所述服务器端20分析得到的程序运行过程中出现的故障情况,生成所述程序的预警变化信息,其中,生成预警变化信息的具体过程为:所述预警生成模块203统计各个客户端10运行的相同版本的相同程序出现的各个故障的排行,以及统计各个客户端10运行的不同版本的相同程序出现的各个故障的排行。
输出模块204,用于输出所述预警生成模块203生成的预警变化信息。
所述输出模块204可采用曲线或报表的形式输出所述预警生成模块203生成的预警变化信息(即故障排行),方便程序开发者能够即时改进程序,即时调整程序的发布策略。
本发明实施例可根据程序运行过程中出现的故障情况生成预警变化信息,便于程序开发者即时改进程序,即时调整程序的发布策略。
为了更清楚地说明本发明,下面将对本发明的服务器端的故障分析模块进行详细介绍。
请参见图6,为本发明的服务器端的故障分析模块的实施例的结构示意图;所述故障分析模块202包括:
解析单元221,用于解析所述接收模块201接收的位段,确定所述位段中各个标记位对应的非预期代码分支。
如前述,由于程序的所有非预期代码分支与位段中的位一一对应,所述解析单元221在所述接收模块201接收到客户端10上报的位段后,解析所述位段,确定所述位段中各个标记位对应的非预期代码分支。
故障确定单元222,用于根据预设的非预期代码分支与故障的对应关系,获得所述解析单元221得到的各个非预期代码分支对应的故障。
具体实现中,每一个非预期代码分支均对应相应的故障,比如:硬盘写程序的预期分支为:硬盘写操作成功;该程序的非预期代码分支为:硬盘写操作失败;当程序运行了硬盘写程序的非预期代码分支,则表明该程序运行过程中出现了“硬盘写操作失败”的故障,所述故障确定单元222根据预设的非预期代码分支与故障的对应关系,确认所述硬盘写操作程序运行过程中出现了“硬盘写操作失败”的故障。
分析单元223,用于根据所述故障确定单元222得到的各个非预期代码分支对应的故障,获得所述程序运行过程中出现的故障情况。
非预期代码分支与故障的对应关系在程序编写过程中预先设定,每一个非预期代码分支的出现即表示程序运行过程中出现了相应的故障,所述分析单元223根据所述故障确定单元222得到的各个非预期代码分支对应的故障,可确定所述程序运行过程中出现的整体故障情况(即整个细节)。
本发明实施例可对程序运行过程中出现的故障情况进行分析和处理,程序分析过程简单、高效,有利于程序的改进。
为了更清楚地说明本发明,下面将对本发明的程序分析方法进行详细介绍。
请参见图7,为本发明的程序分析方法的第一实施例的流程图;所述方法包括:
S101,客户端记录程序运行的非预期代码分支,并将记录结果上报至服务器端。
具体实现中,所述客户端为连接于服务器端的所有客户端。所述S101中,所述客户端可采用位段的方式记录程序运行的非预期代码分支,具体请一并参见图2。预先将程序的所有非预期代码分支与位段中的位一一对应,比如:某程序的第一段非预期代码分支与位段中的第一位相对应, 该程序的第二段非预期代码分支与位段中的第二位相对应,该程序的第N段非预期代码分支与位段中的第N位相对应;当程序运行了第一段非预期代码分支,所述客户端执行所述S101,将位段中的第一位进行标记;当程序运行了第四段非预期代码分支,所述客户端执行所述S101,将位段中的第四位进行标记(请参见图2)。所述S101中,所述客户端采用按位标记方式,将程序运行的所有非预期代码分支均进行标记,最后在程序运行结束后,将位段上报至所述服务器端。
需要说明的是,所述客户端采用位段方式记录时,程序与位段可一一对应,也可采用一个位段对应需要分析的所有程序;另外,程序运行结束可以指程序运行完成,也可以指程序出现异常无法运行而结束。
可以理解的是,所述S101采用位段的方式记录程序运行非预期代码分支仅为举例,其他情况,比如:若程序运行过程中出现的非预期代码分支较少,则可所述S101直接对非预期代码分支进行记录,然后汇总记录结果上报至所述服务器端;再如:所述S101可采用位置信息记录非预期代码分支,如:非预期代码分支位于程序的多少行,等等,然后汇总记录结果上报至所述服务器端;上述其他情况下可类似分析,在此不赘述。
S102,所述服务器端根据预设的非预期代码分支与故障的对应关系,解析所述记录结果,获得所述程序运行过程中出现的故障情况。
所述S102中,所述服务器端接收所述客户端执行所述S101后上报的记录结果,以位段为例,所述服务器端首先接收所述客户端上报的位段,并解析所述位段中各个标记位,确定每个标记位对应的程序运行的非预期代码分支,然后根据预设的非预期代码分支与故障的对应关系,获得所述程序运行过程中出现的故障情况。具体实现中,每一个非预期代码分支均对应相应的故障,比如:硬盘写程序的预期分支为:硬盘写操作成功;该程序的非预期代码分支为:硬盘写操作失败;当程序运行了硬盘写程序的非预期代码分支,则表明该程序运行过程中出现了“硬盘写操作失败”的故障,所述服务器端执行所述S102,解析出该非预期代码分支后,即根据预设的非预期代码分支与故障的对应关系,确认所述硬盘写操作程序运行过程中出现了“硬盘写操作失败”的故障。需要说明的是,非预期代码分支与故障的对应关系在程序编写过程中预先设定,每一个非预期代码分支的出现即表示程序运行过程中出现了相应的故障,所述服务器端在步骤S102中,通过解析客户端上报的位段,获得所述程序运行过程中出现的整体故障情况(即整个细节)。
本发明实施例可对程序运行过程中出现的故障情况进行记录、分析和处理,程序分析过程简单、高效,且有利于程序的改进。
请参见图8,为本发明的程序分析方法的第二实施例的流程图;所述方法包括:
S201,当程序运行任一非预期代码分支时,客户端在位段中将所述非预期代码分支对应的位进行标记。
具体实现中,所述S201可采用位段的方式记录程序运行的非预期代码分支,所述位段包括至少一个位,其中每一位对应于所述程序的唯一一个非预期代码分支,具体请一并参见图2。预先将程序的所有非预期代码分支与位段中的位一一对应,比如:某程序的第一段非预期代码分支与位段中的第一位相对应, 该程序的第二段非预期代码分支与位段中的第二位相对应,该程序的第N段非预期代码分支与位段中的第N位相对应;当程序运行了第一段非预期代码分支,所述S201即将位段中的第一位进行标记;当程序运行了第四段非预期代码分支,所述S201即将位段中的第四位进行标记(请参见图2)。所述S201采用按位标记方式,将程序运行的所有非预期代码分支均进行标记。
需要说明的是,所述S201采用位段方式记录时,程序与位段可一一对应,也可采用一个位段对应需要分析的所有程序。
S202,客户端将标记有所述程序运行的所有非预期代码分支的所述位段上报至服务器端。
所述S202当所述程序运行结束后,将所述S201记标记后的位段上报至服务器端,此处,程序运行结束可以指程序运行完成,也可以指程序出现异常无法运行而结束。
可以理解的是,所述S201采用位段的方式记录程序运行非预期代码分支仅为举例,其他情况,比如:若程序运行过程中出现的非预期代码分支较少,所述S201可直接对非预期代码分支进行记录,然后汇总记录结果由所述S202上报至所述服务器端;再如:所述S201可采用位置信息记录非预期代码分支,如:非预期代码分支位于程序的多少行,等等,然后汇总记录结果由所述S202上报至所述服务器端;上述其他情况下可类似分析,在此不赘述。
本实施例中,所述S201-S202为上一实施例中的S101的具体细化步骤。
S203,服务器端接收并解析所述客户端上报的位段,确定所述位段中各个标记位对应的非预期代码分支。
如前述,由于程序的所有非预期代码分支与位段中的位一一对应,所述S203接收所述S202上报的位段后,解析所述位段,确定所述位段中各个标记位对应的非预期代码分支。
S204,所述服务器端根据预设的非预期代码分支与故障的对应关系,获得各个非预期代码分支对应的故障。
具体实现中,每一个非预期代码分支均对应相应的故障,比如:硬盘写程序的预期分支为:硬盘写操作成功;该程序的非预期代码分支为:硬盘写操作失败;当程序运行了硬盘写程序的非预期代码分支,则表明该程序运行过程中出现了“硬盘写操作失败”的故障,所述S204根据预设的非预期代码分支与故障的对应关系,确认所述硬盘写操作程序运行过程中出现了“硬盘写操作失败”的故障。
S205,所述服务器端根据各个非预期代码分支对应的故障,获得所述程序运行过程中出现的故障情况。
非预期代码分支与故障的对应关系在程序编写过程中预先设定,每一个非预期代码分支的出现即表示程序运行过程中出现了相应的故障,所述S205根据所述S204得到的各个非预期代码分支对应的故障,可确定所述程序运行过程中出现的整体故障情况(即整个细节)。
本实施例中,所述S203-S205为上一实施例S102的具体细化步骤。
S206,所述服务器端根据所述程序运行过程中出现的故障情况,生成所述程序的预警变化信息。
具体实现中,所述预警变化信息可以为所述程序运行过程中的各个故障出现次数的排行。由于各个客户端均向服务器端上报了记录结果,所述S206通过故障分析得到各个客户端的程序运行过程中出现的故障情况,所述S206根据所述服务器端分析得到的程序运行过程中出现的故障情况,生成所述程序的预警变化信息,其中,生成预警变化信息的具体过程为:所述S206统计各个客户端运行的相同版本的相同程序出现的各个故障的排行,以及统计各个客户端运行的不同版本的相同程序出现的各个故障的排行。
S207,所述服务器端输出所述预警变化信息。
所述S207可采用曲线或报表的形式输出所述S206生成的预警变化信息(即故障排行),方便程序开发者能够即时改进程序,即时调整程序的发布策略。
本发明实施例可对程序运行过程中出现的故障情况进行记录、分析和处理,并可根据程序运行过程中出现的故障情况生成预警变化信息,便于程序开发者即时改进程序,即时调整程序的发布策略。
通过上述实施例的描述,本发明实施例的客户端记录程序运行的非预期代码分支,并将记录结果上报至服务器端,由服务器端根据预设的非预期代码分支与故障的对应关系,获得程序运行过程中出现的故障情况,这种全流程故障记录、汇总上报的分析方式,简单、高效,有利于掌握程序的整体工作状态和工作过程中出现的故障(细节),便于程序开发者即时改进程序,即时调整程序的发布策略;另外,本发明实施例的服务器端根据分析得到的程序运行过程中出现的故障情况,生成预警变化信息并输出,可使程序开发者能够即时改进程序,提高用户对程序的使用体验。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。