CN116088863A - 故障定位方法及系统 - Google Patents

故障定位方法及系统 Download PDF

Info

Publication number
CN116088863A
CN116088863A CN202310356615.7A CN202310356615A CN116088863A CN 116088863 A CN116088863 A CN 116088863A CN 202310356615 A CN202310356615 A CN 202310356615A CN 116088863 A CN116088863 A CN 116088863A
Authority
CN
China
Prior art keywords
program modification
modification record
program
fault
round
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.)
Granted
Application number
CN202310356615.7A
Other languages
English (en)
Other versions
CN116088863B (zh
Inventor
张永超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202310356615.7A priority Critical patent/CN116088863B/zh
Publication of CN116088863A publication Critical patent/CN116088863A/zh
Application granted granted Critical
Publication of CN116088863B publication Critical patent/CN116088863B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S10/00Systems supporting electrical power generation, transmission or distribution
    • Y04S10/50Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
    • Y04S10/52Outage or fault management, e.g. fault detection or location

Abstract

本说明书一个或多个实施例提供一种故障定位方法及系统。该方法包括:获取故障程序在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表;运行检测进程,针对初始程序修改记录对应的编译结果进行第一轮的故障检测,并在运行检测进程的过程中,并行运行编译进程,对第二轮的待检测的程序修改记录进行编译;以及,响应于第一轮的故障检测完成,运行检测进程,针对第二轮的待检测的程序修改记录对应的编译结果进行第二轮的故障检测,并在运行所述检测进程的过程中,并行运行所述编译进程,对第三轮的待检测的程序修改记录进行编译,以此类推,直到从程序修改记录列表中检测出与所述故障相关的程序修改记录。

Description

故障定位方法及系统
技术领域
本说明书一个或多个实施例涉及计算机领域,尤其涉及一种故障定位方法及系统。
背景技术
在对开发大型软件程序时,在发现出现故障时,对于故障产生的原因常常难以定位,同时由于故障定位过程涉及到对于软件的编译过程和故障检测过程,两个过程都需要花费较多的时间,使得故障定位过程的性能分析的效率较低。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种故障定位方法及系统,以解决相关技术中存在的问题。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种故障定位方法,包括:
获取故障程序在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表;
运行用于对所述故障程序进行故障检测的检测进程,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测,并在运行所述检测进程的过程中,并行运行用于对所述程序修改记录进行编译的编译进程,对从所述程序修改记录列表中确定出的第二轮的待检测的程序修改记录进行编译;以及,
响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,并在运行所述检测进程的过程中,并行运行所述编译进程,对从所述程序修改记录列表中确定出的第三轮的待检测的程序修改记录进行编译,以此类推,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
可选的,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测之前,还包括:
运行所编译进程对从所述程序修改记录列表中确定出的初始程序修改记录进行编译。
可选的,所述从所述程序修改记录列表中确定初始程序修改记录,包括:
将与未发生故障的初始时刻对应的第一程序修改记录、发生故障的目标时刻对应的第二程序修改记录,以及所述程序修改记录列表中所述第一程序修改记录和所述第二程序修改记录之间的第一中间位置对应的第三程序修改记录确定为初始程序修改记录。
可选的,从所述程序修改记录列表中确定第二轮的待检测的第二轮的待检测的程序修改记录,包括:
将所述程序修改记录列表中所述第一程序修改记录和所述第三程序修改记录之间的第二中间位置对应的第四程序修改记录,以及所述程序修改记录列表中第三程序修改记录和所述第二程序修改记录之间的第三中间位置对应的第五程序修改记录,确定为第二轮的待检测的第二轮的待检测的程序修改记录。
可选的,响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,包括:
响应于所述第一轮的故障检测完成,基于所述第一轮的故障检测结果,确定与所述故障相关的程序修改记录在所述程序修改记录列表中的位置;
如果与所述故障相关的程序修改记录,位于所述第一程序修改记录和所述第三程序修改记录之间,则运行所述检测进程,针对所述第四程序修改记录对应的编译结果,进行第二轮的故障检测;
如果与所述故障相关的程序修改记录,位于所述第三程序修改记录和所述第二程序修改记录之间,则运行所述检测进程,针对所述第五程序修改记录对应的编译结果,进行第二轮的故障检测。
可选的,从所述程序修改记录列表中确定第三轮的待检测的第三轮的待检测的程序修改记录,包括:
如果针对所述第四程序修改记录对应的编译结果,进行了第二轮的故障检测,则将所述程序修改记录列表中所述第一程序修改记录和所述第四程序修改记录之间的第四中间位置对应的第六程序修改记录,以及所述程序修改记录列表中所述第四程序修改记录和所述第三程序修改记录之间的第五中间位置对应的第七程序修改记录,确定为第三轮的待检测的第三轮的待检测的程序修改记录;
如果针对所述第五程序修改记录对应的编译结果,进行了第二轮的故障检测,则将所述程序修改记录列表中所述第三程序修改记录和所述第五程序修改记录之间的第六中间位置对应的第八程序修改记录,以及所述程序修改记录列表中所述第五程序修改记录和所述第第二程序修改记录之间的第七中间位置对应的第九程序修改记录,确定为第三轮的待检测的第三轮的待检测的程序修改记录。
可选的,所述故障程序包括出现故障的Linux内核程序。
根据本说明书一个或多个实施例的第二方面,提出了一种故障定位系统,所述系统执行如第一方面所述方法的步骤。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
由上述实施例的技术方案可知,本申请实施例通过将编译过程前置,并行运行检测进程和编译进程,从而可以大幅减少故障定位所消耗的时间,提升故障定位过程的效率。
附图说明
图1是一示例性实施例提供的一种故障定位方法的流程示意图;
图2是一示例性实施例提供的一种故障定位方法的程序修改记录列表示意图;
图3是一示例性实施例提供的另一种故障定位方法的程序修改记录列表示意图;
图4是一示例性实施例提供的另一种故障定位方法的程序修改记录列表示意图;
图5是一示例性实施例提供的另一种故障定位方法的程序修改记录列表示意图;
图6是一示例性实施例提供的另一种故障定位方法的程序修改记录列表示意图;
图7是一示例性实施例提供的另一种故障定位方法的程序修改记录列表示意图;
图8是一示例性实施例提供的故障定位装置的结构示意图;
图9是一示例性实施例提供的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
用户在开发大型软件程序时,需要不断得通过提交针对软件的程序的补丁代码,以对软件的程序进行更新。若所述软件的程序出现故障,则需要对产生故障的原因进行定位。相关技术在对故障的原因进行定位时,需要先针对提交的补丁代码执行编译过程,再对编译后的结果进行检测。其中,编译过程和故障检测过程均需要消耗大量的时间,例如,对于编译过程可能需要耗费30~60分钟,对于故障检测过程的部署和检测需要耗费20~30分钟。由于编译过程和故障检测过程都需要花费较多的时间,使得故障定位过程的性能分析的效率较低。
有鉴于此,本说明书提出了一种故障定位方法,通过将编译过程前置,在执行当前轮的故障检测过程时,并行运行下一轮的编译过程。
在实现时,先获取故障程序中的程序修改记录列表;运行用于对所述故障程序进行故障检测的检测进程,针对从所述程序修改记录列表中确定出当前轮的程序修改记录对应的编译结果,进行故障检测,并在运行所述检测进程的过程中,并行运行用于对所述程序修改记录进行编译的编译进程,对从所述程序修改记录列表中确定出的下一轮的待检测的程序修改记录进行编译,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
在以上技术方案中,通过将编译过程前置,并行运行检测进程和编译进程,从而在总体时间复杂度为O(log(n))基础上,可以大幅减少故障定位所消耗的时间,提升故障定位过程的效率,提升幅度可以达到50%以上。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本说明书中的技术方案进行清楚、完整地描述。
请参见图1,图1是一示例性实施例提供的一种故障定位方法。
需要说明的是,本说明书的故障定位方法的执行主体可以为能够对故障程序进行故障定位的电子设备、服务端或程序等等,例如,可以为各类终端、云服务端、软件开发平台等,此处不作具体地限定。为了简便起见,在下面的实施例中均以故障检测服务端为例进行举例说明。
所述故障定位方法可以包括以下步骤。
S110、获取故障程序在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表。
当用户发现软件的程序出现故障时,可以先获取针对该故障程序的程序修改记录列表。所述程序修改记录列表可以包括在预设范围内的程序修改记录。所述预设范围可以是预设的数量,例如,故障发生前的预设数量的程序修改记录;或者,所述预设范围也可以是预设的时间区间,例如,可以为用户确定的未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录;其中,所述未发生故障的初始时刻可以由用户根据实际的需求进行设置,例如可以是基于预设的检测周期确定的当前周期的初始时刻,或者,可以是用户上次故障检测未发生故障的时刻等等。为了简便起见,以获取在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表为例进行举例说明。
需要说明的是,所述软件可以多种多样,例如,可以为Linux软件,其对应的程序可以包括Linux内核程序,故障程序包括出现故障的Linux内核程序。
需要说明的是,所述程序修改记录具体可以为用户在软件开发过程中提交的程序补丁的记录,每次提交可以产生一个提交(commit)节点,每个提交节点可以对应于一条程序修改记录。在实际应用中,用户可以通过log命令,获取与各个提交节点对应的程序修改记录,得到程序修改记录列表。
S120、运行用于对所述故障程序进行故障检测的检测进程,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测,并在运行所述检测进程的过程中,并行运行用于对所述程序修改记录进行编译的编译进程,对从所述程序修改记录列表中确定出的第二轮的待检测的程序修改记录进行编译;以及,
S130、响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,并在运行所述检测进程的过程中,并行运行所述编译进程,对从所述程序修改记录列表中确定出的第三轮的待检测的程序修改记录进行编译,以此类推,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
需要说明的是,本说明书的故障定位方法,把对待检测的程序修改记录进行编译的编译过程和对程序修改记录对应的编译结果进行故障检测的故障检测过程分开,分别由两个可以并行的进程执行,由编译进程执行编译过程,由检测进程执行故障检测过程。
需要说明的是,对所述程序修改记录进行编译具体可以为对commit节点对应的程序代码进行打包操作。
在获取到程序修改记录列表后,可以从程序修改记录列表中依次确定出每一轮的待检测的程序修改记录,运行编译进程对待检测的程序修改记录进行编译,得到对应的编译结果,再运行检测进程对编译结果进行故障检测,并且在运行检测进程执行当前轮的故障检测过程时,并行运行编译进程对下一轮的待检测的程序修改记录执行编译过程。
在获取到程序修改记录列表后,该故障定位方法的具体执行过程如下所述:
先从程序修改记录列表中确定出第一轮的待检测的初始程序修改记录,然后运行所述编译进程执行第一轮的编译过程,对从所述程序修改记录列表中确定出的初始程序修改记录进行编译,以得到与初始程序修改记录对应的编译结果;
在得到与初始程序修改记录对应编译结果后,运行检测进程执行第一轮的故障检测过程,对得到的与初始程序修改记录对应的编译结果进行故障检测;从所述程序修改记录列表中确定出第二轮的待检测的程序修改记录,并在检测进程执行第一轮的故障检测过程中,并行运行编译进程执行第二轮的编译过程,对第二轮的待检测的程序修改记录进行编译,以得到与所述第二轮的待检测的程序修改记录对应的编译结果;
在第一轮的故障检测完成后,基于所述第一轮的故障检测结果,运行检测进程执行第二轮的故障检测过程,针对所述第二轮的待检测的程序修改记录对应的编译结果进行故障检测;从所述程序修改记录列表中确定出第三轮的待检测的程序修改记录,并在检测进程执行第二轮的故障检测过程中,并行运行编译进程执行第三轮的编译过程,对第三轮的待检测的程序修改记录进行编译,以得到与所述第三轮的待检测的程序修改记录对应的编译结果;
……,以此类推,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
需要说明的是,在进行到最后一轮的故障检测过程时,由于可能无需再从程序修改记录列表中确定出再下一轮的待检测的程序修改记录,因此,在运行测试进程时,不再并行运行编译进程。
在每一轮的故障检测完成后,可以基于每一轮的故障检测结果逐步缩小与所述故障相关的程序修改记录在所述程序修改记录表中的候选范围,直到在完成最后一轮的故障检测后,基于最后一轮的故障检测结果从所述程序修改记录列表中确定出与所述故障相关的程序修改记录。其中,最后一轮的轮次可以是第一轮、第二轮、第三轮或者其它更多的轮次。
需要说明的是,响应于上一轮的故障检测完成,运行检测进程,针对当前轮的待检测的程序修改记录对应的编译结果,进行当前轮的故障检测,可以包括:
基于上一轮的故障检测结果确定出与所述故障相关的程序修改记录在程序修改记录列表中的候选范围,对在所述候选范围内的当前轮的待检测的程序修改记录进行故障检测。
需要说明的是,可以预先设置故障查找方法,根据预设的故障查找方法,从程序修改记录列表中依次确定出每一轮的待检测的程序修改记录。
其中,对于第一轮的待检测的初始程序修改记录,可以基于预设的故障查找方法,从程序修改记录列表中确定出初始程序修改记录;
对于第二轮的待检测的程序修改记录,可以基于初始程序修改记录在所述程序修改记录列表中位置和预设的故障查找方法,从程序修改列表中确定出第二轮的待检测的程序修改记录;
对于第k轮的待检测的程序修改记录,可以基于第k-2轮的故障检测结果确定与所述故障相关的程序修改记录在所述程序修改记录表中的候选范围,再基于第k-1轮的待检测的程序修改记录在所述候选范围中的位置和预设的故障查找方法,从所述程序修改记录列表中确定出第k轮的待检测的程序修改记录。
其中,基于第k-2轮的故障检测结果确定与所述故障相关的程序修改记录在所述程序修改记录表中的候选范围,也可以基于第k-2轮的故障检测结果确定所述程序修改记录列表中是否存在与所述故障无关的程序修改记录;若存在,则将与所述故障无关的程序修改记录从所述程序修改记录列表中剔除,剩余的程序修改记录即为与所述故障相关的程序修改记录在原有的程序修改记录表中的候选范围。然后,可以再基于第k-1轮的待检测的程序修改记录在所述候选范围中的位置和预设的故障查找方法,从所述程序修改记录列表中确定出第k轮的待检测的程序修改记录。
所述预设的故障查找方法可以根据实际的需要进行设置,例如,在一种示出的实施方式中,可以采用步进的查找方式:基于预设的步长s,在所述程序修改记录列表中按照一定的选取方向,依次选取每一轮的待检测的程序修改记录,以执行如上所述的编译过程和故障检测过程,例如,可以根据各程序修改记录的提交时间从早到晚选取待检测的程序修改记录,以执行如下所述的编译过程和故障检测过程,其中,第m轮的待检测的程序修改记录和第m+1轮的待检测的程序修改记录之间差s条程序修改记录。直到将与所述故障相关的程序修改记录的所在的候选范围限制在一个步长的程序修改记录中,例如,若对第m轮的待检测的程序修改记录进行故障检测的故障检测结果为无故障,对第m+1轮的待检测的程序修改记录进行故障检测的故障检测结果为存在故障,则可以确定与所述故障相关的程序修改记录位于第m轮的待检测的程序修改记录和第m+1轮的待检测的程序修改记录之间。然后,再在该步长内的程序修改记录中,通过逐步缩小步长方式或者依次检测的方式来确定与所述故障相关的程序修改记录。
又例如,在一种示出的实施方式中,所述预设的故障查找方法可以采用二分法的查找方式,在针对基于二分法选取的每一轮的待检测的程序修改记录进行故障检测后,可以根据每一轮的故障检测结果,将与所述故障相关的程序修改记录在程序修改记录列表中所在的候选范围减半,直到确定出与所述故障相关的程序修改记录。若所述程序修改记录列表中包括N条程序修改记录,则理论上在进行约轮故障检测后可以从程序修改记录列表检测出与所述故障相关的程序修改记录。
请参见图2-图7,以二分法的查找方式为例的故障定位方法的可以包括以下步骤。
如图2所示,获取故障程序在未发生故障的初始时刻对应的第一程序修改记录A1到发生故障的目标时刻对应的第二程序修改记录A2之间的程序修改记录列表。
如图3所示,将与未发生故障的初始时刻对应的第一程序修改记录A1、发生故障的目标时刻对应的第二程序修改记录A2,以及所述程序修改记录列表中所述第一程序修改记录A1和所述第二程序修改记录A2之间的第一中间位置对应的第三程序修改记录A3确定为初始程序修改记录,并运行编译进程分别对确定为初始程序修改记录的第一程序修改记录A1、第二程序修改记录A2和第三程序修改记录A3进行编译,分别得到与第一程序修改记录A1、第二程序修改记录A2和第三程序修改记录A3对应的编译结果。
需要说明的是,所述未发生故障的初始时刻对应的第一程序修改记录A1可以为已确定未发生故障的程序修改记录,也可以是在已确定未发生故障的程序修改记录之后提交的第一条程序修改记录;所述发生故障的目标时刻对应的第二程序修改记录A2可以为已确定发生故障的程序修改记录,也可以为已确定发生故障的程序修改记录之前提交的最后一条程序修改记录;所述已确定发生故障或未发生故障具体可以是指经过预先或之前的故障检测后确定的。
若所述第一程序修改记录A1为已确定未发生故障的程序修改记录,则在确定初始程序修改记录时,可以不将所述第一程序修改记录A1列为初始程序修改记录;相应的,若所述第二程序修改记录A2为已确定发生故障的程序修改记录,则在确定初始程序修改记录时,可以不将所述第二程序修改记录A2列为初始程序修改记录。为了简便起见,在下面的实施例中以初始程序修改记录包括第一程序修改记录A1、第二程序修改记录A2和第三程序修改记录A3为例进行举例说明。
如图4所示,运行用于对所述故障程序进行故障检测的检测进程,对初始程序修改记录对应的编译结果进行第一轮的故障检测;并将所述程序修改记录列表中位于所述第三程序修改记录A3两侧的二分位对应的程序修改记录确定为第二轮的待检测的程序修改记录,具体包括:将所述程序修改记录列表中第一程序修改记录A1和所述第三程序修改记录A3之间的第二中间位置对应的第四程序修改记录A4,以及所述程序修改记录列表中第三程序修改记录A3和所述第二程序修改记录A2之间的第三中间位置对应的第五程序修改记录A5,确定为第二轮的待检测的程序修改记录;在运行所述检测进程的过程中,并行运行编译进程对第四程序修改记录A4和第五程序修改记录A5进行编译,分别得到与第四程序修改记录A4和第五程序修改记录A5对应的编译结果。
响应于所述第一轮的故障检测完成,基于所述第一轮的故障检测结果,可以确定与所述故障相关的程序修改记录在所述程序修改记录列表中所在的候选范围;其中,在所述第一轮的故障检测结果中,与第一程序修改记录A1对应的故障检测结果为未发生故障,与第二程序修改记录A2对应的故障检测结果为发生故障,若与第三程序修改记录A3对应的故障检测结果为发生故障,则可以确定与所述故障相关的程序修改记录,位于第一程序修改记录A1与第三程序修改记录A3之间,如图5所示;若与第三程序修改记录A3对应的故障检测结果为未发生故障,则可以确定与所述故障相关的程序修改记录,位于第三程序修改记录A3与第二程序修改记录A2之间,如图6所示。
如图5所示,响应于所述第一轮的故障检测完成,如果与所述故障相关的程序修改记录,位于所述第一程序修改记录A1和所述第三程序修改记录A3之间,则运行所述检测进程,针对所述第四程序修改记录A4对应的编译结果,进行第二轮的故障检测;并将所述第一程序修改记录A1和所述第三程序修改记录A3之间位于所述第四程序修改记录A4两侧的二分位对应的程序修改记录确定为第三轮的待检测的程序修改记录,具体包括:将所述程序修改记录列表中所述第一程序修改记录A1和所述第四程序修改记录A4之间的第四中间位置对应的第六程序修改记录A6,以及所述程序修改记录列表中第四程序修改记录A4和所述第三程序修改记录A3之间的第五中间位置对应的第七程序修改记录A7,确定为第三轮的待检测的程序修改记录,在运行所述检测进程的过程中,并行运行编译进程对第六程序修改记录A6和第七程序修改记录A7进行编译,分别得到与第六程序修改记录A6和第七程序修改记录A7对应的编译结果。
在针对所述第四程序修改记录A4对应的编译结果,进行第二轮的故障检测之后,响应于所述第二轮的故障检测完成,基于所述第一轮的故障检测结果,可以进一步缩小与所述故障相关的程序修改记录在所述程序修改记录列表中所在的候选范围;其中,若与第四程序修改记录A4对应的故障检测结果为发生故障未发生故障,则可以确定与所述故障相关的程序修改记录,位于第四程序修改记录A4与第三程序修改记录A3之间,如图7所示。
如图7所示,响应于所述第二轮的故障检测完成,如果与所述故障相关的程序修改记录,位于第四程序修改记录A4与第三程序修改记录A3之间,则运行所述检测进程,针对所述第七程序修改记录A7对应的编译结果,进行第三轮的故障检测;并将所述第四程序修改记录A4和所述第三程序修改记录A3之间位于所述第七程序修改记录A7两侧的二分位对应的程序修改记录确定为第四轮的待检测的程序修改记录,具体包括:将所述程序修改记录列表中所述第四程序修改记录A4和所述第七程序修改记录A7之间的第八中间位置对应的第十程序修改记录A10,以及所述程序修改记录列表中第七程序修改记录A7和所述第三程序修改记录A3之间的第九中间位置对应的第十一程序修改记录A11,确定为第四轮的待检测的程序修改记录,在运行所述检测进程的过程中,并行运行编译进程对第十程序修改记录A10和第十一程序修改记录A11进行编译,分别得到与第十程序修改记录A10和第十一程序修改记录A11对应的编译结果。
……依次执行上述过程,可以从所述程序修改记录列表检测与所述故障相关的程序修改记录。
如图6所示,响应于所述第一轮的故障检测完成,如果与所述故障相关的程序修改记录,位于所述第三程序修改记录A3和所述第二程序修改记录A2之间,则运行所述检测进程,针对所述第五程序修改记录A5对应的编译结果,进行第二轮的故障检测;并将所述第三程序修改记录A3和所述第二程序修改记录A2之间位于所述第五程序修改记录A5两侧的二分位对应的程序修改记录确定为第三轮的待检测的程序修改记录,具体包括:将所述程序修改记录列表中所述第三程序修改记录A3和所述第五程序修改记录A5之间的第六中间位置对应的第八程序修改记录A8,以及所述程序修改记录列表中第五程序修改记录A5和所述第二程序修改记录A2之间的第七中间位置对应的第九程序修改记录A9,确定为第三轮的待检测的程序修改记录,在运行所述检测进程的过程中,并行运行编译进程对第八程序修改记录A8和第九程序修改记录A9进行编译,分别得到与第八程序修改记录A8和第九程序修改记录A9对应的编译结果。
……依次执行上述过程,可以从所述程序修改记录列表检测与所述故障相关的程序修改记录。
由上述实施例的技术方案可知,本申请实施例通过将编译过程前置,并行运行检测进程和编译进程,从而可以大幅减少故障定位所消耗的时间,提升故障定位过程的效率。
与前述故障定位方法的实施例相对应,本申请还提供了故障定位装置的实施例。
如图8所示,所述故障定位装置包括:记录获取模块801和故障检测模块802。
所述记录获取模块801用于获取故障程序在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表;所述故障检测模块802用于运行用于对所述故障程序进行故障检测的检测进程,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测,并在运行所述检测进程的过程中,并行运行用于对所述程序修改记录进行编译的编译进程,对从所述程序修改记录列表中确定出的第二轮的待检测的程序修改记录进行编译;以及,响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,并在运行所述检测进程的过程中,并行运行所述编译进程,对从所述程序修改记录列表中确定出的第三轮的待检测的程序修改记录进行编译,以此类推,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
可选的,所述故障检测模块802还用于运行所编译进程对从所述程序修改记录列表中确定出的初始程序修改记录进行编译。
可选的,所述故障检测模块802用于将与未发生故障的初始时刻对应的第一程序修改记录、发生故障的目标时刻对应的第二程序修改记录,以及所述程序修改记录列表中所述第一程序修改记录和所述第二程序修改记录之间的第一中间位置对应的第三程序修改记录确定为初始程序修改记录。
可选的,所述故障检测模块802用于将所述程序修改记录列表中所述第一程序修改记录和所述第三程序修改记录之间的第二中间位置对应的第四程序修改记录,以及所述程序修改记录列表中第三程序修改记录和所述第二程序修改记录之间的第三中间位置对应的第五程序修改记录,确定为第二轮的待检测的第二轮的待检测的程序修改记录。
可选的,所述故障检测模块802用于:
响应于所述第一轮的故障检测完成,基于所述第一轮的故障检测结果,确定与所述故障相关的程序修改记录在所述程序修改记录列表中的位置;
如果与所述故障相关的程序修改记录,位于所述第一程序修改记录和所述第三程序修改记录之间,则运行所述检测进程,针对所述第四程序修改记录对应的编译结果,进行第二轮的故障检测;
如果与所述故障相关的程序修改记录,位于所述第三程序修改记录和所述第二程序修改记录之间,则运行所述检测进程,针对所述第五程序修改记录对应的编译结果,进行第二轮的故障检测。
可选的,所述故障检测模块802用于:
如果针对所述第四程序修改记录对应的编译结果,进行了第二轮的故障检测,则将所述程序修改记录列表中所述第一程序修改记录和所述第四程序修改记录之间的第四中间位置对应的第六程序修改记录,以及所述程序修改记录列表中所述第四程序修改记录和所述第三程序修改记录之间的第五中间位置对应的第七程序修改记录,确定为第三轮的待检测的第三轮的待检测的程序修改记录;
如果针对所述第五程序修改记录对应的编译结果,进行了第二轮的故障检测,则将所述程序修改记录列表中所述第三程序修改记录和所述第五程序修改记录之间的第六中间位置对应的第八程序修改记录,以及所述程序修改记录列表中所述第五程序修改记录和所述第第二程序修改记录之间的第七中间位置对应的第九程序修改记录,确定为第三轮的待检测的第三轮的待检测的程序修改记录。
可选的,所述中间位置为中间时刻对应的位置。
可选的,所述故障程序包括出现故障的Linux内核程序。
由上述实施例的技术方案可知,本申请实施例通过将编译过程前置,并行运行检测进程和编译进程,从而可以大幅减少故障定位所消耗的时间,提升故障定位过程的效率。
与前述故障定位方法的实施例相对应,本申请还提供了故障定位系统的实施例,所所述故障定位系统可以实现以下步骤。
获取故障程序在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表;
运行用于对所述故障程序进行故障检测的检测进程,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测,并在运行所述检测进程的过程中,并行运行用于对所述程序修改记录进行编译的编译进程,对从所述程序修改记录列表中确定出的第二轮的待检测的程序修改记录进行编译;以及,
响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,并在运行所述检测进程的过程中,并行运行所述编译进程,对从所述程序修改记录列表中确定出的第三轮的待检测的程序修改记录进行编译,以此类推,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
需要说明的是,所述故障定位系统可以实现如上所述的方法实施例的技术方案,此处不再赘述。
所述故障定位系统通过将编译过程前置,并行运行检测进程和编译进程,从而可以大幅减少故障定位所消耗的时间,提升故障定位过程的效率。
图9是一示例性实施例提供的一种设备的示意结构图。请参考图9,在硬件层面,该设备包括处理器902、内部总线904、网络接口906、内存908以及非易失性存储器910,当然还可能包括其他所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器902从非易失性存储器910中读取对应的计算机程序到内存909中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (10)

1.一种故障定位方法,其特征在于,包括:
获取故障程序在未发生故障的初始时刻到发生故障的目标时刻之间的程序修改记录列表;
运行用于对所述故障程序进行故障检测的检测进程,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测,并在运行所述检测进程的过程中,并行运行用于对所述程序修改记录进行编译的编译进程,对从所述程序修改记录列表中确定出的第二轮的待检测的程序修改记录进行编译;以及,
响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,并在运行所述检测进程的过程中,并行运行所述编译进程,对从所述程序修改记录列表中确定出的第三轮的待检测的程序修改记录进行编译,以此类推,直到从所述程序修改记录列表中检测出与所述故障相关的程序修改记录。
2.根据权利要求1所述的方法,其特征在于,针对从所述程序修改记录列表中确定出的初始程序修改记录对应的编译结果,进行第一轮的故障检测之前,还包括:
运行所编译进程对从所述程序修改记录列表中确定出的初始程序修改记录进行编译。
3.根据权利要求1所述的方法,其特征在于,所述从所述程序修改记录列表中确定初始程序修改记录,包括:
将与未发生故障的初始时刻对应的第一程序修改记录、发生故障的目标时刻对应的第二程序修改记录,以及所述程序修改记录列表中所述第一程序修改记录和所述第二程序修改记录之间的第一中间位置对应的第三程序修改记录确定为初始程序修改记录。
4.根据权利要求3所述的方法,其特征在于,从所述程序修改记录列表中确定第二轮的待检测的程序修改记录,包括:
将所述程序修改记录列表中所述第一程序修改记录和所述第三程序修改记录之间的第二中间位置对应的第四程序修改记录,以及所述程序修改记录列表中第三程序修改记录和所述第二程序修改记录之间的第三中间位置对应的第五程序修改记录,确定为第二轮的待检测的程序修改记录。
5.根据权利要求4所述的方法,其特征在于,响应于所述第一轮的故障检测完成,运行所述检测进程,针对所述第二轮的待检测的程序修改记录对应的编译结果,进行第二轮的故障检测,包括:
响应于所述第一轮的故障检测完成,基于所述第一轮的故障检测结果,确定与所述故障相关的程序修改记录在所述程序修改记录列表中的位置;
如果与所述故障相关的程序修改记录,位于所述第一程序修改记录和所述第三程序修改记录之间,则运行所述检测进程,针对所述第四程序修改记录对应的编译结果,进行第二轮的故障检测;
如果与所述故障相关的程序修改记录,位于所述第三程序修改记录和所述第二程序修改记录之间,则运行所述检测进程,针对所述第五程序修改记录对应的编译结果,进行第二轮的故障检测。
6.根据权利要求5所述的方法,其特征在于,从所述程序修改记录列表中确定第三轮的待检测的程序修改记录,包括:
如果针对所述第四程序修改记录对应的编译结果,进行了第二轮的故障检测,则将所述程序修改记录列表中所述第一程序修改记录和所述第四程序修改记录之间的第四中间位置对应的第六程序修改记录,以及所述程序修改记录列表中所述第四程序修改记录和所述第三程序修改记录之间的第五中间位置对应的第七程序修改记录,确定为第三轮的待检测的程序修改记录;
如果针对所述第五程序修改记录对应的编译结果,进行了第二轮的故障检测,则将所述程序修改记录列表中所述第三程序修改记录和所述第五程序修改记录之间的第六中间位置对应的第八程序修改记录,以及所述程序修改记录列表中所述第五程序修改记录和所述第二程序修改记录之间的第七中间位置对应的第九程序修改记录,确定为第三轮的待检测的程序修改记录。
7.根据权利要求1所述的方法,其特征在于,所述故障程序包括出现故障的Linux内核程序。
8.一种故障定位系统,其特征在于,所述系统执行如权利要求1-7中任一所述的方法。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。
CN202310356615.7A 2023-04-04 2023-04-04 故障定位方法及系统 Active CN116088863B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310356615.7A CN116088863B (zh) 2023-04-04 2023-04-04 故障定位方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310356615.7A CN116088863B (zh) 2023-04-04 2023-04-04 故障定位方法及系统

Publications (2)

Publication Number Publication Date
CN116088863A true CN116088863A (zh) 2023-05-09
CN116088863B CN116088863B (zh) 2023-09-26

Family

ID=86201030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310356615.7A Active CN116088863B (zh) 2023-04-04 2023-04-04 故障定位方法及系统

Country Status (1)

Country Link
CN (1) CN116088863B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
JP2014225140A (ja) * 2013-05-16 2014-12-04 Necプラットフォームズ株式会社 情報収録システム、収録システム用障害対処方法、及びその障害対処プログラム
US20140380101A1 (en) * 2013-06-19 2014-12-25 Electronics And Telecommunications Research Nstitute Apparatus and method for detecting concurrency error of parallel program for multicore
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
CN106445627A (zh) * 2016-10-14 2017-02-22 郑州云海信息技术有限公司 一种代码集成编译中问题定位的方法及装置
EP3432149A1 (en) * 2017-07-20 2019-01-23 Fujitsu Limited A computer-implemented method and system of compiling a modified source code at a plurality of target machines
CN111831556A (zh) * 2020-06-18 2020-10-27 中国科学院空间应用工程与技术中心 软件多故障解耦及并行定位方法及装置
CN113190466A (zh) * 2021-06-08 2021-07-30 科东(广州)软件科技有限公司 自动化测试方法、装置、设备及介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014225140A (ja) * 2013-05-16 2014-12-04 Necプラットフォームズ株式会社 情報収録システム、収録システム用障害対処方法、及びその障害対処プログラム
US20140380101A1 (en) * 2013-06-19 2014-12-25 Electronics And Telecommunications Research Nstitute Apparatus and method for detecting concurrency error of parallel program for multicore
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
CN106445627A (zh) * 2016-10-14 2017-02-22 郑州云海信息技术有限公司 一种代码集成编译中问题定位的方法及装置
EP3432149A1 (en) * 2017-07-20 2019-01-23 Fujitsu Limited A computer-implemented method and system of compiling a modified source code at a plurality of target machines
CN111831556A (zh) * 2020-06-18 2020-10-27 中国科学院空间应用工程与技术中心 软件多故障解耦及并行定位方法及装置
CN113190466A (zh) * 2021-06-08 2021-07-30 科东(广州)软件科技有限公司 自动化测试方法、装置、设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
M. WEN等: ""Historical Spectrum Based Fault Localization"", 《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》, vol. 47, no. 11, XP011887710, DOI: 10.1109/TSE.2019.2948158 *
李征等: ""软件多缺陷定位方法研究综述"", 《计算机学报》, vol. 45, no. 2 *

Also Published As

Publication number Publication date
CN116088863B (zh) 2023-09-26

Similar Documents

Publication Publication Date Title
CN106371940B (zh) 一种程序崩溃解决方法及装置
CN101308471B (zh) 一种恢复数据的方法及装置
CN106897342B (zh) 一种数据校验方法和设备
CN112380401B (zh) 业务数据的核对方法和装置
CN108228443B (zh) 一种web应用的测试方法及装置
CN110716845A (zh) 一种Android系统的日志信息读取的方法
CN112181902A (zh) 数据库的存储方法、装置及电子设备
CN112765248A (zh) 基于sql的数据抽取的方法及设备
CN114860654A (zh) 一种基于Flink数据流的Iceberg表Schema动态变更方法及系统
CN113918658A (zh) 恢复数据的方法及装置
CN116088863B (zh) 故障定位方法及系统
CN116126581B (zh) 内存故障处理方法、装置、系统、设备及存储介质
CN111597407A (zh) 一种基于tcam的关键字匹配方法、装置、设备及存储介质
CN110471828B (zh) 一种操作系统测试方法、装置及其设备
CN110019295B (zh) 数据库检索方法、装置、系统以及存储介质
CN107562533B (zh) 一种数据加载处理方法及装置
CN115858211A (zh) 机器检查错误的处理方法及装置
CN114691496A (zh) 单元测试方法、装置、计算设备及介质
CN115203050A (zh) 一种服务的依赖关系的确定方法及装置
CN113486109A (zh) 异构数据库的数据同步方法、装置及电子设备
CN114818458A (zh) 系统参数优化方法、装置、计算设备及介质
CN114816816A (zh) 崩溃堆栈信息处理方法、装置、设备及存储介质
CN112579591B (zh) 数据校验方法、装置、电子设备及计算机可读存储介质
CN114817047A (zh) 编译器测试方法、用例生成方法及装置、指令存储结构
CN113051184B (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
GR01 Patent grant
GR01 Patent grant