CN108270832B - 一种故障重放方法和装置 - Google Patents
一种故障重放方法和装置 Download PDFInfo
- Publication number
- CN108270832B CN108270832B CN201611270208.0A CN201611270208A CN108270832B CN 108270832 B CN108270832 B CN 108270832B CN 201611270208 A CN201611270208 A CN 201611270208A CN 108270832 B CN108270832 B CN 108270832B
- Authority
- CN
- China
- Prior art keywords
- fault
- terminal
- application program
- class
- center
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种故障重放方法和装置,涉及信息技术领域,能够解决不能实时故障重放和故障重放时故障模板的复用率低的问题。其方法为:终端根据应用程序的进程标识将故障代理附加至应用程序中,并启动故障代理;终端接收故障中心发送的故障模板;终端通过故障代理和故障模板修改应用程序;终端接收故障中心的故障重放指令,以运行修改后的应用程序。本申请实施例应用于分布式系统进行故障重放的场景。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种故障重放方法和装置。
背景技术
随着网络技术的不断发展,大量分布式系统被部署在网络中。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地数据库分布节点还是远程数据库分布节点。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道数据关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。
为了测试分布式系统的健壮性,需要对系统进行故障重放,故障重放即在系统测试过程中对已知的业务运行过程中异常场景的再现。现有技术一可以通过直接干预目标对象,构造真实故障来进行故障重放。例如,可以通过在测试过程中将网络禁用、数据库连接异常或将目标数据库停止,以构造网络异常的故障;或可以将目标磁盘拷贝大量的无用文件以构造磁盘空间满的故障。现有技术二可以在应用的代码逻辑中直接埋入预制的故障,并通过外部的开关控制是否进行故障重放。例如,若要构造数据库插入数据失败的故障,则可以在业务执行数据库操作后,直接构造数据库数据插入失败的异常返回给相关业务,异常代码构造完成后,需要编译、打包、发布到应用程序的运行系统中并重启相关应用程序。
现有技术一和现有技术二一般都是根据部署环境构造,对于不同的部署环境可能需要重新开发一套故障测试代码,导致故障重放复用率低。且在现有技术二中,当前的故障构造完毕之后需要停止相关应用后再进行部署,部署完毕需要重启应用,因此无法做到实时进行故障重放。
发明内容
本申请实施例提供一种故障重放方法和装置,能够解决不能实时故障重放和故障模板的复用率低的问题。
一方面,本申请实施例提供一种故障重放方法,包括:终端根据应用程序的进程标识将故障代理附加至应用程序中,并启动故障代理;终端接收故障中心发送的故障模板;终端通过故障代理和故障模板修改应用程序;终端接收故障中心的故障重放指令,以运行修改后的应用程序。其中,附加到应用程序上的故障代理可以用于实时修改应用程序。这样一来,终端在需要进行故障重放时,可以通过故障代理接收故障中心发送的故障模板,而后故障代理根据故障模板来实时修改应用程序,当终端在接收到故障中心的故障重放指令后,可以直接运行修改后的应用程序,相比现有技术,在故障重放时,需要在修改完应用程序后重启应用程序以运行修改后的应用程序,本申请实施例可以实时运行修改后的应用程序,从而实现实时故障重放;且本申请实施例通过统一的故障中心下发故障模板,相比现有技术需要根据不同的部署坏境重新开发故障测试代码,本申请实施例可以解决故障重放时,故障模板的复用率低的问题。
在一种可能的设计中,方法还包括:终端向故障中心进行注册;终端向故障中心进行注册包括:终端通过传输控制协议传输控制协议(Transmission Control Protocol,TCP)向故障中心发送注册消息,注册消息包括应用程序的端口号和网际协议(InternetProtocol,IP)地址。这样一来,终端可以通过向故障中心发送注册消息在故障中心注册需要进行故障重放的应用。
在一种可能的设计中,故障模板包括待转换的类的标识以及故障代码片段。这样一来,终端可以根据故障摸板获取到应用程序中待转换的类的标识以及相应的故障代码片段。
在一种可能的设计中,终端通过故障代理和故障模板修改应用程序包括:终端通过故障代理解析故障模板,将解析得到的待转换的类的标识对应的类注册为重转换类;终端在应用程序运行期间,通过类转换器拦截重转换类的运行,并在类转换器中将重转换类对应的代码片段替换为故障代码片段。这样一来,终端可以在应用程序运行期间,将重转换类对应的代码片段替换为故障代码片段,相比现有技术,需要停止应用程序才可以替换故障代码,本申请实施例可以实时将重转换类对应的代码片段替换为故障代码片段。
在一种可能的设计中,方法还包括:终端向故障中心通知故障重放完成;终端接收故障中心发送的故障恢复指令,并将应用程序恢复至修改之前的应用程序。这样一来,终端可以在故障重放完成后,对应用程序进行故障恢复。
另一方面,本申请实施例提供一种故障重放方法,包括:故障中心向终端发送故障模板;故障中心在确定终端根据故障模板和故障代理修改应用程序后,向终端发送故障重放指令,使终端继续运行修改后的应用程序,故障代理附加在应用程序中。这样一来,终端可以通过故障代理接收故障模板,而后故障代理根据故障模板修改应用程序,当终端接收到故障中心发送的故障重放指令后,终端可以继续运行修改后的应用程序,相比现有技术,在故障重放时需要重启应用程序才能运行修改后的应用程序,本申请实施例可以实时故障重放,解决了现有技术中不能实时故障重放的问题,且本申请实施例统一由故障中心向终端发送故障模板,相比现有技术需要根据不同的部署坏境重新开发故障测试代码,本申请实施例可以解决故障重放时,故障模板的复用率低的问题。
在一种可能的设计中,方法还包括:故障中心接收终端通过传输控制协议TCP发送的注册消息,注册消息包括应用程序的端口号和网际协议IP地址。
在一种可能的设计中,故障模板包括待转换的类的标识以及故障代码片段。
在一种可能的设计中,方法还包括:故障中心确定终端完成故障重放;故障中心向终端发送故障恢复指令,以指示终端将应用程序恢复至修改之前的应用程序。这样一来,终端可以在应用程序运行期间,将应用程序恢复至修改之前的应用程序,相比现有技术,需要停止应用程序才可以恢复修改之前的应用程序,本申请实施例可以实时恢复修改之前的应用程序。
再一方面,提供一种终端,包括:附加单元,用于根据应用程序的进程标识将故障代理附加至应用程序中,并启动故障代理;接收单元,用于接收故障中心发送的故障模板;故障重放单元,用于通过故障代理和故障模板修改应用程序;接收单元还用于,接收故障中心的故障重放指令,以继续运行修改后的应用程序。
在一种可能的设计中,还包括注册单元,用于:向故障中心进行注册;通过传输控制协议TCP向故障中心发送注册消息,注册消息包括应用程序的端口号和网际协议IP地址。
在一种可能的设计中,故障模板包括待转换的类的标识以及故障代码片段。
在一种可能的设计中,故障重放单元用于:通过故障代理解析故障模板,将解析得到的待转换的类的标识对应的类注册为重转换类;在应用程序运行期间,通过类转换器拦截重转换类的运行,并在类转换器中将重转换类对应的代码片段替换为故障代码片段。
在一种可能的设计中,终端还包括通知单元,用于:向故障中心通知故障重放完成;接收单元还用于,接收故障中心发送的故障恢复指令,还包括替换单元,用于将应用程序恢复至修改之前的应用程序。
再一方面,提供一种故障中心,包括:发送单元,用于在向终端发送故障模板;确定单元,用于确定终端根据故障模板和故障代理修改应用程序;发送单元还用于,向终端发送故障重放指令,使终端继续运行修改后的应用程序,故障代理附加在应用程序中。
在一种可能的设计中,故障单元还包括接收单元,用于:接收终端通过传输控制协议TCP发送的注册消息,注册消息包括应用程序的端口号和网际协议IP地址。
在一种可能的设计中,故障模板包括待转换的类的标识以及故障代码片段。
在一种可能的设计中,确定单元还用于:确定终端完成故障重放;发送单元还用于,向终端发送故障恢复指令,以指示终端将应用程序恢复至修改之前的应用程序。
再一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述终端所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
再一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述故障中心所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
这样一来,终端可以通过故障代理接收故障中心发送的故障模板,而后故障代理根据故障模板实时修改应用程序,当终端在接收到故障中心的故障重放指令后,可以直接运行修改后的应用程序,相比现有技术,在故障重放时,需要在修改完应用程序后重启应用程序以运行修改后的应用程序,本申请实施例可以实时运行修改后的应用程序,从而实现实时故障重放,且本申请实施例通过统一的故障中心下发故障模板,相比现有技术需要根据不同的部署坏境重新开发故障测试代码,本申请实施例可以解决故障重放时,故障模板的复用率低的问题。
附图说明
图1为本申请实施例提供的一种终端的内部结构示意图;
图2为本申请实施例提供的一种故障中心的内部结构示意图;
图3为本申请实施例提供的一种故障重放方法信号交互示意图;
图4为本申请实施例提供的一种附加和注册前后的故障代理、应用程序和故障中心的系统间关系示意图;
图5为本申请实施例提供的一种故障中心与多个故障代理的命令传输示意图;
图6为本申请实施例提供的一种终端的结构示意图;
图7为本申请实施例提供的一种终端的结构示意图;
图8为本申请实施例提供的一种故障中心的结构示意图;
图9为本申请实施例提供的一种故障中心的结构示意图。
具体实施方式
本申请实施例可应用于在分布式系统进行故障重放的场景,例如应用于分布式系统运行期对应用程序进行故障重放的场景。分布式系统可以包括故障中心和至少一个终端。其中,故障中心可以理解为位于服务器上的一个逻辑实体,故障中心的动作可以由服务器执行。终端可以为个人计算机(Personal Computer,PC)、手机、平板电脑(pad)、智能学习机、智能游戏机、智能电视、智能眼镜或智能手表。
图1为本申请实施例提供的终端的一种内部结构示意图,在本申请中,终端可以包括处理模块101、通讯模块102和、存储模块103和显示模块104。其中,处理模块101用于控制终端的各部分硬件装置和应用程序软件等。通讯模块102用于可使用蜂窝、以太网、和红外等通讯方式接受其它设备发送的指令,也可以将终端的数据发送给云端或其它设备。存储模块103用于执行终端的软件程序的存储、数据的存储和软件的运行等,可以是随机存取存储器(Random Access Memory,RAM)、可擦除可编程只读寄存器(Erasable ProgrammableRead Only Memory,EPROM)、固态硬盘(Solid State Drives,SSD)和SD卡(Secure DigitalMemory Card)等中的一种或多种。显示模块104用于显示用户的操作界面和操作结果,可接收处理模块101的数据并显示。
图2为本申请实施例提供的故障中心的一种内部结构示意图,在本申请实施例中,服务器可以包括处理模块201、通讯模块202和存储模块203。其中,处理模块201用于控制服务器的各部分硬件装置和应用程序软件等。通讯模块202用于可使用蜂窝、以太网、和红外等通讯方式接受其它设备发送的指令,也可以将服务器的数据发送给云端或其它设备。存储模块203用于执行服务器的软件程序的存储、数据的存储和软件的运行等,可以是随机存取存储器、可擦除可编程只读寄存器、固态硬盘和SD卡等中的一种或多种。
本申请实施例提供一种故障重放方法,其大致过程为,终端确定对某应用程序进行故障重放后,可以根据该应用程序的进程标识将故障代理附加到该应用程序中,并启动故障代理;终端可以通过故障代理向故障中心注册,并通过故障代理接受故障中心发送的故障模板;终端通过故障代理与根据故障模板修改该应用程序,而后当终端可以接收到故障中心发送的故障重放指令时,可以实时以继续运行修改后的应用程序。本申请实施例中的故障代理以基于javaagent技术实现的故障重放代理为例,可以由类(class)组成,并由Java存档文件(Java Archive File,Jar)文件中的manifest文件指定作为故障代理的类。故障代理可以被终端上运行的Java虚拟机通过命令行直接开启,也可以在Java虚拟机启动程序后,通过附加(attach)技术附加到应用程序中。
本申请实施例提供一种故障重放的方法,如图3所示,包括:
301、终端根据应用程序的进程标识将故障代理附加至应用程序中,并启动故障代理。
当用户需要对发布的应用程序进行测试时,用户可以触发终端将故障代理附加至应用程序的流程。具体过程可以是:终端根据应用程序的进程标识通过attach技术将故障代理附加至应用程序进程内,并启动故障代理,附加后故障代理和应用程序可以共存于应用进程内。其中,故障代理可以用于在加载应用程序的class文件前拦截应用程序的class文件,并对class文件的字节码做修改;也可以用于在应用程序运行期对已加载的应用程序的class文件的字节码做修改。
应用程序的进程标识,是应用程序在运行期的唯一标识,例如可以是应用程序的进程号。
302、终端向故障中心进行注册。
具体地,可以是终端通过故障代理向故障中心进行注册,故障代理通过TCP向故障中心发送注册消息,注册消息可以包括应用程序的端口号和IP地址。注册消息还可以包括应用程序标识和应用程序的描述信息。
步骤301和步骤302执行前和执行后可以如图4所示,步骤301和步骤302执行前,故障代理和应用程序不在同一个进程内,当步骤301和步骤302执行后,故障代理和应用程序可以共存于应用程序的进程内,并且终端通过故障代理向故障中心进行注册。
终端向故障中心注册之后,可以监听故障中心是否发送故障模板。
303、故障中心向终端发送故障模板。
具体地,故障中心可以向终端内的故障代理发送故障模板,故障中心发送的故障模板可以包括待转换的类的标识以及故障代码片段。待转换的类的标识可以称为故障植入点,即应用程序中将被替换或屏蔽的类。故障代码片段也可以称为故障重放指令集,是模拟出来的将要被植入应用程序中的代码片段。
举例来说,假设故障模板如下所示:
其中,classname/method为故障植入点;before/after为故障代码片段。
故障模板中还可以包括故障的生命周期管理,生命周期管理描述了故障从故障重放到故障恢复的周期过程。
另外,如图5所示,故障中心可以同时向多个应用程序中的故障代理发送故障模板。
304、终端通过故障代理解析故障模板,将解析得到的待转换的类的标识对应的类注册为重转换类。
故障代理解析故障模块,即故障代理根据故障模板获取故障植入点、故障代码片段和故障生命周期等信息。
终端可以通过故障代理向运行在终端上的虚拟机的instrument模块注册重转换类,即通过故障代理向instrument模块通知应用程序的故障植入点。instrument模块是虚拟机中允许代码植入的模块,该模块可以通知用户之前正常运行的程序代码,当代码修改后,可以通过该模块可以发布修改后的代码。
305、终端在应用程序运行期间,通过类转换器拦截重转换类的运行,并在类转换器中将重转换类对应的代码片段替换为故障代码片段。
当应用程序执行到故障植入点时,终端可以通过故障代理的类转换器模块拦截重转换类的运行,即拦截故障植入点所对应的类的运行。
并且,终端在故障代理的类转换器中将重转换类对应的代码片段替换为故障代理从故障模板中解析出的故障代码片段。
举例来说,若重转换类对应的代码片段为:
public void execute(String sql){
//数据库查询操作
}
故障代理从故障模板中解析出的故障代码片段为:
public void execute(String sql){
Interceptor.before();
//数据库查询操作
Interceptor.After();
}
则终端将重转换类对应的代码片段替换为故障代码片段,即终端
将//数据库查询操作
替换为
Interceptor.before();
//数据库查询操作
Interceptor.After();
终端可以在应用程序运行期将重转换类对应的应用程序的代码片段替换为故障代码片段,不需要重启应用程序的进程以完成替换过程。
另外,当终端将重转换类对应的应用程序的代码片段替换为故障代码片段后,终端可以通过故障代理通知故障中心,以便于故障中心向终端发送故障重放指令。
306、故障中心向终端发送故障重放指令。
当终端接收到故障中心发送的故障重放指令时,终端可以通过故障代理在应用程序进程中打开故障重放开关,以便在应用程序后续的运行过程中实时触发故障重放。
示例性的,用户可以在终端触发故障重放开关打开,若用户触发故障重放开关打开,则终端通过故障代理在应用程序进程中打开故障重放开关,以便在应用程序后续的运行过程中实时触发故障重放;若用户不触发故障重放开关打开,则终端不会在应用程序后续的运行过程中实时触发故障重放。
另外,当故障重放开关打开时,终端可以通知故障中心故障重放开关已打开。
307、终端运行修改后的应用程序。
终端在收到故障重放指令后,可以实时运行修改后的应用程序,修改后的应用程序即将故障植入点替换为故障代码片段后的应用程序。
308、终端向故障中心通知故障重放完成。
当用户对应故障需要对应用程序故障恢复时,用户可以触发终端向故障中心通知故障重放完成,以使故障中心发送故障恢复指令。
309、故障中心向终端发送故障恢复指令。
310、终端将应用程序恢复至修改之前的应用程序。
终端可以在应用程序运行期将应用程序的故障代码恢复至故障原有的代码片段,不需要重启应用程序的进程以完成故障恢复。
这样一来,终端可以通过故障代理接收故障中心发送的故障模板,而后故障代理根据故障模板修改应用程序,当终端收到故障中心发送的故障重放指令时,可以在应用程序运行期实时运行修改后的应用程序,相比现有技术在故障重放后需要重启应用程序,本申请实施例不需要重启应用程序,可以直接在应用程序运行期实时故障重放,解决了现有技术中不能实时进行故障重放;且终端向故障中心注册后,可以接收故障中心发送的故障模板,相比现有技术,需要根据不同的部署环境开发故障测试代码,本申请实施例可以统一由故障中心发送故障模板,解决了故障重放时,故障模板的复用率低的问题。
上述主要从终端和故障中心的角度对本申请实施例提供的方案进行了介绍。可以理解的是,终端和故障中心为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对终端进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的终端6的一种可能的结构示意图,终端包括:附加单元601,注册单元602、故障重放单元603、接收单元604、通知单元605和替换单元606。附加单元601用于支持终端执行图3中的过程301;注册单元602用于支持终端执行图3中的过程302;故障重放单元603用于支持终端执行图3中的过程304和305;通知单元605用于支持终端执行图3中的过程308;替换单元606用于支持终端执行图3中的过程310。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图1示出了上述实施例中所涉及的终端的一种可能的结构示意图。其中,处理模块101用于支持终端执行图3中的301、302、304、305、307和310,通讯模块102用于支持终端与其他网络实体的通信,例如与服务器之间的通信,从服务器下载得到应用的安装包等。终端还可以包括存储模块103,用于存储终端的程序代码和数据,例如用于存储本申请实施例中的故障模板等。
其中,处理模块101可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通讯模块102可以是收发器、收发电路或通信接口等。存储模块103可以是存储器。
当处理模块101为处理器,通信模块102为收发器,存储模块103为存储器时,本申请实施例所涉及的终端可以为图7所示的终端。
参阅图7所示,该终端7包括:处理器701、收发器702、存储器703以及总线704。其中,收发器702、处理器701以及存储器703通过总线704相互连接;总线704可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述实施例中所涉及的故障中心8的一种可能的结构示意图,故障中心包括:发送单元801,接收单元802和确定单元803。其中,发送单元801用于支持故障中心执行图3中的过程303。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图2示出了上述实施例中所涉及的故障中心的一种可能的结构示意图。其中,处理模块201用于支持故障中心执行终端的注册等过程,通讯模块202用于支持故障中心与其他网络实体的通信,例如与服务器之间的通信,从服务器下载得到应用的安装包等。故障中心还可以包括存储模块203,用于存储故障中心的程序代码和数据,例如用于存储本申请实施例中的故障模板等。
其中,处理模块201可以是处理器或控制器,例如可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通讯模块202可以是收发器、收发电路或通信接口等。存储模块203可以是存储器。
当处理模块201为处理器,通信模块202为收发器,存储模块203为存储器时,本申请实施例所涉及的故障中心可以为图9所示的故障中心。
参阅图9所示,该故障中心9包括:处理器901、收发器902、存储器903以及总线904。其中,收发器902、处理器901以及存储器903通过总线904相互连接;总线904可以是PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(ReadOnly Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (12)
1.一种故障重放方法,其特征在于,包括:
终端根据应用程序的进程标识将故障代理附加至所述应用程序中,并启动所述故障代理;
所述终端接收所述故障中心发送的故障模板,所述故障模板包括待转换的类的标识以及故障代码片段;
所述终端通过所述故障代理和所述故障模板修改所述应用程序;
所述终端接收所述故障中心的故障重放指令,以运行修改后的所述应用程序;
所述终端通过所述故障代理和所述故障模板修改所述应用程序包括:
所述终端通过所述故障代理解析所述故障模板,将解析得到的所述待转换的类的标识对应的类注册为重转换类;
所述终端在所述应用程序运行期间,通过类转换器拦截所述重转换类的运行,并在所述类转换器中将所述重转换类对应的代码片段替换为所述故障代码片段。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述终端向故障中心进行注册;
所述终端向故障中心进行注册包括:
所述终端通过传输控制协议TCP向所述故障中心发送注册消息,所述注册消息包括所述应用程序的端口号和网际协议IP地址。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述终端向所述故障中心通知故障重放完成;
所述终端接收所述故障中心发送的故障恢复指令,并将所述应用程序恢复至修改之前的应用程序。
4.一种故障重放方法,其特征在于,包括:
故障中心向终端发送故障模板,所述故障模板包括待转换的类的标识以及故障代码片段;
所述故障中心在确定所述终端根据所述故障模板和故障代理修改应用程序后,向所述终端发送故障重放指令,使所述终端继续运行修改后的所述应用程序,所述故障代理附加在所述应用程序中;
其中,所述终端通过所述故障模板和所述故障代理修改所述应用程序包括:所述终端通过所述故障代理解析所述故障模板,将解析得到的所述待转换的类的标识对应的类注册为重转换类;所述终端在所述应用程序运行期间,通过类转换器拦截所述重转换类的运行,并在所述类转换器中将所述重转换类对应的代码片段替换为所述故障代码片段。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述故障中心接收所述终端通过传输控制协议TCP发送的注册消息,所述注册消息包括所述应用程序的端口号和网际协议IP地址。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
所述故障中心确定所述终端完成故障重放;
所述故障中心向所述终端发送故障恢复指令,以指示所述终端将所述应用程序恢复至修改之前的应用程序。
7.一种终端设备,其特征在于,包括:
附加单元,用于根据应用程序的进程标识将故障代理附加至所述应用程序中,并启动所述故障代理;
接收单元,用于接收所述故障中心发送的故障模板,所述故障模板包括待转换的类的标识以及故障代码片段;
故障重放单元,用于通过所述故障代理和所述故障模板修改所述应用程序;
所述接收单元还用于,接收所述故障中心的故障重放指令,以运行修改后的所述应用程序;
所述故障重放单元具体用于:通过所述故障代理解析所述故障模板,将解析得到的所述待转换的类的标识对应的类注册为重转换类;在所述应用程序运行期间,通过类转换器拦截所述重转换类的运行,并在所述类转换器中将所述重转换类对应的代码片段替换为所述故障代码片段。
8.根据权利要求7所述的终端设备,其特征在于,还包括注册单元,用于:
向故障中心进行注册;
通过传输控制协议TCP向所述故障中心发送注册消息,所述注册消息包括所述应用程序的端口号和网际协议IP地址。
9.根据权利要求7所述的终端设备,其特征在于,所述终端设备还包括通知单元,用于:
向所述故障中心通知故障重放完成;
所述接收单元还用于,接收所述故障中心发送的故障恢复指令;
还包括替换单元,用于通过将所述应用程序恢复至修改之前的应用程序。
10.一种故障中心,其特征在于,包括:
发送单元,用于向终端发送故障模板,所述故障模板包括待转换的类的标识以及故障代码片段;
确定单元,用于确定所述终端根据所述故障模板和故障代理修改应用程序,其中,所述终端通过所述故障模板和所述故障代理修改所述应用程序包括:所述终端通过所述故障代理解析所述故障模板,将解析得到的所述待转换的类的标识对应的类注册为重转换类;所述终端在所述应用程序运行期间,通过类转换器拦截所述重转换类的运行,并在所述类转换器中将所述重转换类对应的代码片段替换为所述故障代码片段;
所述发送单元还用于,向所述终端发送故障重放指令,使所述终端继续运行修改后的所述应用程序,所述故障代理附加在所述应用程序中。
11.根据权利要求10所述的故障中心,其特征在于,所述故障单元还包括接收单元,用于:
接收所述终端通过传输控制协议TCP发送的注册消息,所述注册消息包括所述应用程序的端口号和网际协议IP地址。
12.根据权利要求10或11所述的故障中心,其特征在于,
所述确定单元还用于:确定所述终端完成故障重放;
所述发送单元还用于,向所述终端发送故障恢复指令,以指示所述终端将所述应用程序恢复至修改之前的应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611270208.0A CN108270832B (zh) | 2016-12-30 | 2016-12-30 | 一种故障重放方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611270208.0A CN108270832B (zh) | 2016-12-30 | 2016-12-30 | 一种故障重放方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108270832A CN108270832A (zh) | 2018-07-10 |
CN108270832B true CN108270832B (zh) | 2020-11-06 |
Family
ID=62771339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611270208.0A Active CN108270832B (zh) | 2016-12-30 | 2016-12-30 | 一种故障重放方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108270832B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710539A (zh) * | 2019-01-17 | 2019-05-03 | 南京大学 | 一种基于字节码操作的安卓软件增强测试方法 |
CN110633099A (zh) * | 2019-09-05 | 2019-12-31 | 北京无限光场科技有限公司 | 应用程序的修复方法、装置、设备和可读介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932979A (zh) * | 2015-07-01 | 2015-09-23 | 王沛 | 一种软件故障查找方法和装置 |
CN105718354A (zh) * | 2016-01-20 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684557B2 (en) * | 2006-04-04 | 2017-06-20 | Adobe Systems Incorporated | System and method for facilitating recovery from a document creation error |
US8954797B2 (en) * | 2012-04-16 | 2015-02-10 | International Business Machines Corporation | Reconfigurable recovery modes in high availability processors |
-
2016
- 2016-12-30 CN CN201611270208.0A patent/CN108270832B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932979A (zh) * | 2015-07-01 | 2015-09-23 | 王沛 | 一种软件故障查找方法和装置 |
CN105718354A (zh) * | 2016-01-20 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108270832A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539471B2 (en) | Updating firmware of an electronic device | |
WO2017067448A1 (zh) | 一种无线固件升级方法、系统及计算机存储介质 | |
CN112486585B (zh) | 恢复fpga芯片中的逻辑的方法、系统和fpga设备 | |
WO2009146612A1 (zh) | 嵌入式c语言环境下异常处理方法及装置 | |
CN111709032A (zh) | 一种在多种分区上实现pfr功能的方法、系统、设备及介质 | |
CN110968392B (zh) | 一种升级虚拟化模拟器的方法和装置 | |
CN112000353A (zh) | 应用运行方法、装置及存储介质 | |
CN115328563B (zh) | 系统启动方法及电子设备 | |
CN108270832B (zh) | 一种故障重放方法和装置 | |
CN110377323B (zh) | 一种区块链dapp管理系统 | |
CN110007935B (zh) | 一种程序升级的处理方法、装置及设备 | |
CN115408371A (zh) | 一种redis数据库动态冗余部署方法和装置 | |
JP2007527562A (ja) | 埋め込みシステムの中に統合されるソフトウェアコンポーネントを管理する方法 | |
CN116881929B (zh) | 安全防护方法、装置、电子设备以及基板控制器芯片 | |
CN116700768B (zh) | 一种应用的处理方法及相关装置 | |
CN112199099A (zh) | 应用更新方法、装置、服务器及存储介质 | |
CN115827522A (zh) | Bios的设置方法、bios芯片和电子设备 | |
CN113342376B (zh) | 一种针对物联网设备的操作系统进行升级的方法及装置 | |
CN112115477B (zh) | 内核修复方法、装置、电子设备及存储介质 | |
CN116578446B (zh) | 虚拟机备份方法、装置、系统、电子设备及存储介质 | |
CN117311769B (zh) | 服务器日志生成方法和装置、存储介质及电子设备 | |
CN113722011B (zh) | 应用界面启动方法、装置、设备和存储介质 | |
CN114968314B (zh) | 显示设备的固件升级方法、装置、电子设备及存储介质 | |
CN115525308A (zh) | 一种区块链升级方法和装置 | |
CN112181677A (zh) | 业务的处理方法和装置、存储介质、电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200214 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 210012 HUAWEI Nanjing base, 101 software Avenue, Yuhuatai District, Suzhou, Jiangsu. Applicant before: Huawei Technologies Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |