CN114661503B - 基于程序切片的软件关联配置错误诊断方法及装置 - Google Patents

基于程序切片的软件关联配置错误诊断方法及装置 Download PDF

Info

Publication number
CN114661503B
CN114661503B CN202210096739.1A CN202210096739A CN114661503B CN 114661503 B CN114661503 B CN 114661503B CN 202210096739 A CN202210096739 A CN 202210096739A CN 114661503 B CN114661503 B CN 114661503B
Authority
CN
China
Prior art keywords
configuration
program
error
configuration item
software
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
Application number
CN202210096739.1A
Other languages
English (en)
Other versions
CN114661503A (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.)
Tianjin University
Original Assignee
Tianjin University
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 Tianjin University filed Critical Tianjin University
Priority to CN202210096739.1A priority Critical patent/CN114661503B/zh
Publication of CN114661503A publication Critical patent/CN114661503A/zh
Application granted granted Critical
Publication of CN114661503B publication Critical patent/CN114661503B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0718Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an object-oriented system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种基于程序切片的软件关联配置错误诊断方法及装置。该方法包括:指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;通过所述关联配置项列表匹配与所述错误配置项相关联的配置项。可见,本发明基于程序切片通过找出配置项之间的关联关系,从而诊断出涉及该错误的多个关联的配置项,提出准确的建议帮助用户有效解决问题。

Description

基于程序切片的软件关联配置错误诊断方法及装置
技术领域
本发明涉及软件安全领域,特别涉及一种基于程序切片的软件关联配置错误诊断方法、装置、电子设备、计算机可读存储介质。
背景技术
目前,几乎所有的现代系统软件均对用户提供大量可自定义的配置(configuration)项,终端用户可以在不需要重新编译应用程序的情况下,根据自己的需求、结合软件对应的功能特性和硬件环境信息等对应用软件进行深度的定制调整,进而使得计算任务可以顺利完成并输出符合预期的结果。举例而言,配置项可以决定应用程序从哪个路径读取输入文件、让服务器监听哪个端口、亦或是启用软件中的哪些功能组件等等。然而,随着计算机技术和互联网的快速发展,越来越多的系统软件为了提高其灵活性,使用了数量众多的配置参数,例如Apache Hadoop拥有超过400个配置项,而Mozilla Firefox的配置项更是超过了2000个。大量的配置项在提升软件的可定制性的同时,也给软件在实际使用时正确配置带来了更多的困难,软件配置错误问题已给系统运行时的可靠性、可用性和系统性能等带来了巨大挑战。
软件配置错误(misconfiguration)是指:软件源代码和输入都正确无误,但由于配置项中的某个或某些项目设定为了不合理的数值,导致软件无法正常运行(包括无法启动以及中途崩溃等)或最终输出了不符合理论预期的结果。当下,软件配置错误已成为商业互联网服务、工业生产工作等现实场景中威胁软件系统正常运行的重要因素之一。根据Oppenheimer等人的调查研究,现实中的系统运维故障中的50%以上样例是软件配置错误的导致的;而根据Gray等人的研究,在这些系统运维故障中的42%直接导致了系统宕机事故。进一步地,软件配置错误可能会带来灾难性的后果,严重影响应用和服务质量,给企业甚至国家带来经济和声誉等方面的负面影响。
在真实世界的配置错误中,23.4%-61.2%涉及多个配置选项。此外,在有多个选项的情况下,配置选项具有相关性。一个配置选项值的正确性和效果取决于其他配置选项值。换句话说,相关联的配置选项应该放在一起考虑:设置其中一个选项会影响其他选项。多个配置选项之间的依赖关系被认为是软件配置复杂性和易出错性的一个关键来源。系统用户不仅要面对大量选项的配置空间,而且还要了解它们之间的依赖关系。更糟糕的是,配置依赖关系还可能跨越组件边界,一个软件组件中定义的配置选项可能依赖于另一个组件(甚至是另一个项目)中定义的参数。在这些情况下,每个配置选项值单独都是正确的,但是值组合违反了依赖约束。因此,单配置项错误诊断的技术不能有效地处理由配置依赖关系引起的问题。
软件配置错误的诊断与修复已成为软件安全研究方向的一个细分领域,其主要目的是研究如何发现、定位并修复软件错误背后潜藏着的配置错误,进而提高现代软件系统的可靠性和鲁棒性。许多科研机构已经参与到了该领域的研究工作当中,且已经有一些研究成果产出,例如Attariyan等人设计的ConfAid工具,ConfAid针对目标系统采用白盒分析策略,通过细粒度的因果关联分析实现配置错误的诊断。Rabkin提出了ConfAnalyzer,通过静态数据流分析跟踪标签流,如果配置选项的值流到崩溃点,则将其视为根本原因。Zhang针对单个配置项取值错误导致的系统功能异常设计实现了工具ConfDiagnoser。ConfDiagnoser将静态分析、动态分析和统计学习结合在一起,进行配置错误自动诊断。Xu提出了SPEX,SPEX分析源代码来推断配置选项约束,并使用这些约束来诊断软件的错误配置。上述方法都是诊断单配置项错误,对配置依赖关系导致的多配置错误不能有效解决。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于程序切片的软件关联配置错误诊断方法、装置、电子设备、计算机可读存储介质。
本发明的一个实施例提供一种基于程序切片的软件关联配置错误诊断方法,该方法包括:
指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;
将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;
对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;
通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;
通过所述关联配置项列表匹配与所述错误配置项相关联的配置项。
可选地,所述指定软件的源代码中配置项的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量,包括:
指定软件的源代码中的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将所述配置项映射成所述源代码中的配置变量。
可选地,所述将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句,包括:
基于wala切片工具从配置变量的声明语句的位置开始进行前向切片,找到所述配置变量所影响的谓词语句。
可选地,所述对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项,包括:
对所述谓词语句进行插桩运行,记录所述谓词语句的执行情况,根据所述谓词语句正确运行和错误运行之间统计数据定位错误配置项。
本发明的另一个实施例提供一种基于程序切片的软件关联配置错误诊断装置,包括:
配置变量定位单元,用于指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;
程序切片单元,用于将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;
错误配置项定位单元,用于对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;
关联配置项列表生成单元,用于通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;
配置项匹配单元,用于通过所述关联配置项列表匹配与所述错误配置项相关联的配置项。
可选地,所述配置变量定位单元进一步用于指定软件的源代码中的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将所述配置项映射成所述源代码中的配置变量。
可选地,所述程序切片单元进一步基于wala切片工具从配置变量的声明语句的位置开始进行前向切片,找到所述配置变量所影响的谓词语句。
可选地,所述错误配置项定位单元进一步用于对所述谓词语句进行插桩运行,记录所述谓词语句的执行情况,根据所述谓词语句正确运行和错误运行之间统计数据定位错误配置项。
本发明的另一个实施例提供一种电子设备,其中,该电子设备包括:
处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述的基于程序切片的软件关联配置错误诊断方法。
本发明的另一个实施例提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现上述的基于程序切片的软件关联配置错误诊断方法。
本发明的有益效果是,本发明基于程序切片通过找出配置项之间的关联关系,从而诊断出涉及该错误的多个关联的配置项,提出准确的建议帮助用户有效解决问题。
附图说明
图1为本发明一个实施例的基于程序切片的软件关联配置错误诊断方法的流程示意图;
图2为本发明一个实施例的基于程序切片的软件关联配置错误诊断方法的原理图;
图3为本发明一个实施例的前向切片的示意图;
图4为本发明一个实施例的基于程序切片的软件关联配置错误诊断装置的结构示意图;
图5示出了根据本发明一个实施例的电子设备的结构示意图;
图6示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1为本发明一个实施例的基于程序切片的软件关联配置错误诊断方法的流程示意图。如图1所示,该方法包括:
S11:指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;
对于用户来说,可以通过用户手册或者配置文件获得配置项列表。本发明实施例使用程序分析的方式进行配置错误的诊断,需要对配置项进行切片处理,但是配置项在源代码中一般以配置变量的方式存储。所以实现程序分析的配置错误诊断就需要建立从配置项到程序变量的映射关系。
S12:将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;
S13:对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;
S14:通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;
本发明实施例为了解决多个配置选项错误的问题,在单个配置错误诊断之后加入了关联判断,实现了多配置选项的诊断。
如果两个配置选项存在关联即某种依赖关系,那么他们的控制流或者数据流一定会有重合部分,重合度越高那么关联关系越强。推广到多个配置项也可以得到这样的结论。
根据以上理论对每个配置选项进行的程序切片,两两对比分析切片结果集是否存在重合的语句。如果存在重合则记录对应的配置项,迭代所有配置项切片结果集合即可得到每个配置项有相同切片语句的配置项的集合。求相同语句数量和该配置选项切片结果总数量的比率即为两两配置选项之间的关联度。
S15:通过所述关联配置项列表匹配与所述错误配置项相关联的配置项。
将诊断得到的错误配置项依次与相关联的配置项进行匹配,得到错误配置项列表。当用户通过调试可疑列表中的第一个选项无法修改错误时,可考虑是由于多个配置项共同导致的错误,通过同时调试该项以及该配置项的关联配置项中关联度最高的选项来修复错误。
可理解的是,软件的配置参数间存在关联和约束,例如配置参数取值的一致性、依赖性、取值范围的相互制约等。如果忽略这些关联和约束,将极易发生配置约束违背,产生系统运行故障。现在的工具仅能解决单参数配置错误,本发明实施例的基于程序切片的软件关联配置错误诊断方法,基于程序切片通过找出配置项之间的关联关系,从而诊断出涉及该错误的多个关联的配置项,提出准确的建议帮助用户有效解决问题。
图2为本发明一个实施例的基于程序切片的软件关联配置错误诊断方法的原理图。如图2所示,首先用户需要指定源代码中配置项的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将配置项映射成源代码中的配置变量,将配置变量的声明语句作为切片的种子语句。对配置选项列表进行程序切片,在切片位置加入插桩代码。用户对插桩完成的包进行错误注入即可得到程序错误运行过程中配置选项运行轨迹的统计学知识。通过程序正确运行和错误运行之间统计数据的不同即可得到可能发生错误的配置选项。对该可疑错误配置选项进行关联分析,可得到与该配置选项有相同执行路径的其他配置选项集合。将该选项与该选项关联的配置选项集合返回给用户,辅助配置错误进行修复。在实际应用中,还输出配置项的错误报告。
在本发明实施例的一种可选的实施方式中,所述指定软件的源代码中配置项的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量,包括:
指定软件的源代码中的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将所述配置项映射成所述源代码中的配置变量。
可理解的是,对于java程序来说配置项的读入一般是通过get方法赋值给程序变量,但是这些get方法获取到的配置项一般只是用户可通过配置文件或者控制台命令修改的,对于程序开发人员来说还存在用户不可改的配置选项。为了全面的覆盖配置项,本发明实施例采取从配置类中读取配置项的方法,即可以获取配置项列表,也保证了配置项的完整性。
进一步地,所述将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句,包括:
基于wala切片工具从配置变量的声明语句的位置开始进行前向切片,找到所述配置变量所影响的谓词语句。
需要说明的是,前向切片是指从程序变量的声明位置,向程序运行的方向进行切片,收集和程序变量所影响的谓词和程序语句。如图3所示,我们对Z这个变量进行前向切片。左边这列是源代码,以第3行为Z的声明位置,从此开始切片,向程序运行的方向,收集到与Z相关的第5,7,9行的谓词语句(参见图3的右列的源代码)。
进一步地,所述对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项,包括:
对所述谓词语句进行插桩运行,记录所述谓词语句的执行情况,根据所述谓词语句正确运行和错误运行之间统计数据定位错误配置项。
本发明实施例基于wala切片工具从配置项的程序变量的声明位置开始进行前向切片,得到该配置选项所影响的程序语句。这里的程序语句只记录条件表达式类型的谓词,因为这样的谓词结果都可以使用true或者false来表示,表示的维度小方便计算。
对前向切片得到的谓词语句进行插桩,用于记录该谓词语句的执行情况。执行情况表示为谓词执行的总次数以及执行为true的次数,以及执行为true的次数的频率。每一个配置项切片结果由多个谓词组成,每一谓词都有一一对应的一个执行情况即频率值。将以上信息转化为一个一维向量Z表示为。一个程序包的所有配置选项进行以上操作可以获得一个执行情况矩阵,表示该谓词的执行情况。
Zi=(Z1,,Z2,Z3,...,Zn,)i=1,…,n
如果在相同用户输入的情况下两次执行程序,那么配置项的执行路径是不会发生变化的,即对应的执行情况矩阵不会发生变化。如果配置项发生变化,那么对应的频率值发生变化则执行矩阵必然会不同。只需要找到发生偏移的谓词对应的配置项即为发生错误的根本原因。
实际情况是往往是一个配置选项发生错误时,执行矩阵中往往多个变量值发生变化。求矩阵中差值最大的谓词执行情况对应的配置选项,如果差值相同选择该谓词最靠近的配置项的声明作为可能发生错误的配置选项。将差值降序排列得到对应的可疑配置选项列表。
这里存在一个省略的问题即一个谓词可能影响多个配置选项,当这个谓词的执行情况发生较大变化本发明实施例只选取了其中的一个作为可能的根本原因。我们取一个最坏的可能。当一个整个执行矩阵时候一个谓词发生变化时,他们的变化率完全相等,那么所有配置项发生错误的可能是一致的,但是根据广度优先只选择了一个配置项作为列表进行了输出。即以上步骤只能完成单配置错误的诊断工作。
以下以Randoop,Soot,Synoptics这三个java软件为例进行说明。
表1测试软件介绍
软件 配置项数 代码行数
Randoop 57 18587
Soot 49 159273
Synoptics 37 19153
表2真实配置错误的描述
软件 语言 错误描述
Randoop Java 大量失败的测试输入
Soot Java 无法找到一个类的源代码
Synoptics Java 无法将文件转成一个正确的格式
表1和表2列出了3种软件的配置项数、代码行数及真实配置错误的描述。
表3诊断准确度以及和其他工具的对比效果
如表3所示,将本发明实施例的关联方法和Confdiagnoser的诊断准确度进行比较。Confdiagnoser是一种静态的自动化软件配置错误诊断技术,它使用谓词的偏差值来推断可以配置项。表3的第一行代表软件的配置项,如第一列,代表Randoop中的alias_ratio这个配置项。Rank1指的是在输出结果中是根本错误原因的排名(结果越小越好),Rank2指的是该错误配置项和前一列根本原因配置项关联度的排名,1代表排名第一,2代表排名第二,X代表无法诊断出该配置项。从表3中来看,本发明实施例的关联诊断方法的效果更加准确且全面,主要原因是Confdiagnoser仅能诊断单个配置项错误造成的failure,而忽略了配置项之间存在关联和约束带来的问题,显然这样并不能帮助用户更好的解决问题。并且在根本原因推断上,关联方法的诊断准确性更高,原因是ConfDiagnoser只关注谓词行为的变化,而忽略了可能配置变量所影响的语句,关联方法关注受控语句的数量可以显著提高诊断的准确性。本发明实施例对来自三个java软件的三个现实世界的配置错误进行了评估,在这三个错误的六个根本原因中,诊断出了五个错误的配置选项,都排在第一位,因此说明该方法十分有效。
表4检测出的关联配置项数目以及有效率
如表4所示,本发明实施例使用数据流和控制流查找的有效关联配置项有效率都很高,其中,使用控制流查找的有效关联配置项有效率为100%。
图4为本发明一个实施例的基于程序切片的软件关联配置错误诊断装置的结构示意图。如图4所示,该装置包括:
配置变量定位单元41,用于指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;
程序切片单元42,用于将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;
错误配置项定位单元43,用于对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;
关联配置项列表生成单元44,用于通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;
配置项匹配单元45,用于通过所述关联配置项列表匹配与所述错误配置项相关联的配置项。
本发明实施例的基于程序切片的软件关联配置错误诊断装置,基于程序切片通过找出配置项之间的关联关系,从而诊断出涉及该错误的多个关联的配置项,提出准确的建议帮助用户有效解决问题。
在本发明实施例的一种可选的实施方式中,配置变量定位单元41进一步用于指定软件的源代码中的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将所述配置项映射成所述源代码中的配置变量。
程序切片单元42进一步基于wala切片工具从配置变量的声明语句的位置开始进行前向切片,找到所述配置变量所影响的谓词语句。
错误配置项定位单元43进一步用于对所述谓词语句进行插桩运行,记录所述谓词语句的执行情况,根据所述谓词语句正确运行和错误运行之间统计数据定位错误配置项。
需要说明的是,上述实施例中的基于程序切片的软件关联配置错误诊断装置可分别用于执行前述实施例中的方法,因此不再一一进行具体的说明。
综上所述,本发明基于程序切片通过找出配置项之间的关联关系,从而诊断出涉及该错误的多个关联的配置项,提出准确的建议帮助用户有效解决问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的检测电子设备的佩戴状态的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图5示出了根据本发明一个实施例的电子设备的结构示意图。该电子设备传统上包括处理器51和被安排成存储计算机可执行指令(程序代码)的存储器52。存储器52可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器52具有存储用于执行图1所示的以及各实施例中的任何方法步骤的程序代码54的存储空间53。例如,用于存储程序代码的存储空间53可以包括分别用于实现上面的方法中的各种步骤的各个程序代码54。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图6所述的计算机可读存储介质。该计算机可读存储介质可以具有与图5的电子设备中的存储器52类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储空间存储有用于执行根据本发明的方法步骤的程序代码61,即可以有诸如处理器51读取的程序代码,当这些程序代码由电子设备运行时,导致该电子设备执行上面所描述的方法中的各个步骤。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。

Claims (6)

1.一种基于程序切片的软件关联配置错误诊断方法,其特征在于,包括:
指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;
将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;
对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;
通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;
通过所述关联配置项列表匹配与所述错误配置项相关联的配置项;
所述将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句,包括:
基于wala切片工具从配置变量的声明语句的位置开始进行前向切片,找到所述配置变量所影响的谓词语句;
所述对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项,包括:
对所述谓词语句进行插桩运行,记录所述谓词语句的执行情况,根据所述谓词语句正确运行和错误运行之间统计数据定位错误配置项。
2.根据权利要求1所述的方法,其特征在于,所述指定软件的源代码中配置项的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量,包括:
指定软件的源代码中的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将所述配置项映射成所述源代码中的配置变量。
3.一种基于程序切片的软件关联配置错误诊断装置,其特征在于,包括:
配置变量定位单元,用于指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;
程序切片单元,用于将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;
错误配置项定位单元,用于对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;
关联配置项列表生成单元,用于通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;
配置项匹配单元,用于通过所述关联配置项列表匹配与所述错误配置项相关联的配置项;
所述程序切片单元进一步基于wala切片工具从配置变量的声明语句的位置开始进行前向切片,找到所述配置变量所影响的谓词语句;
所述错误配置项定位单元进一步用于对所述谓词语句进行插桩运行,记录所述谓词语句的执行情况,根据所述谓词语句正确运行和错误运行之间统计数据定位错误配置项。
4.根据权利要求3所述的装置,其特征在于,所述配置变量定位单元进一步用于指定软件的源代码中的配置类以及配置项列表,通过查找配置类定位到配置项的声明位置,并将所述配置项映射成所述源代码中的配置变量。
5.一种电子设备,其特征在于,该电子设备包括:
处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据权利要求1-2中任一项所述的基于程序切片的软件关联配置错误诊断方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现权利要求1-2中任一项所述的基于程序切片的软件关联配置错误诊断方法。
CN202210096739.1A 2022-01-26 2022-01-26 基于程序切片的软件关联配置错误诊断方法及装置 Active CN114661503B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210096739.1A CN114661503B (zh) 2022-01-26 2022-01-26 基于程序切片的软件关联配置错误诊断方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210096739.1A CN114661503B (zh) 2022-01-26 2022-01-26 基于程序切片的软件关联配置错误诊断方法及装置

Publications (2)

Publication Number Publication Date
CN114661503A CN114661503A (zh) 2022-06-24
CN114661503B true CN114661503B (zh) 2023-10-27

Family

ID=82025888

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210096739.1A Active CN114661503B (zh) 2022-01-26 2022-01-26 基于程序切片的软件关联配置错误诊断方法及装置

Country Status (1)

Country Link
CN (1) CN114661503B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116126680B (zh) * 2022-11-23 2023-07-21 北京交通大学 一种软件系统配置错误诊断方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104850411A (zh) * 2015-06-10 2015-08-19 清华大学 存储系统基准评测程序生成方法及装置
CN106951372A (zh) * 2017-04-05 2017-07-14 西安邮电大学 一种基于变量切片和关联规则的软件错误定位方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732669B2 (en) * 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US10129023B2 (en) * 2016-08-11 2018-11-13 International Business Machines Corporation Enhancing security for multiple storage configurations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104850411A (zh) * 2015-06-10 2015-08-19 清华大学 存储系统基准评测程序生成方法及装置
CN106951372A (zh) * 2017-04-05 2017-07-14 西安邮电大学 一种基于变量切片和关联规则的软件错误定位方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Automated diagnosis of software configuration errors;Sai Zhang等;《2013 35th International Conference on Software Engineering (ICSE)》;全文 *
一种基于关联挖掘的服务一致化配置方法;王焘;陈伟;李娟;刘绍华;苏林刚;张文博;;计算机研究与发展(第01期);全文 *
动态程序分析技术在错误定位中的应用;陈伟;;现代计算机(专业版)(第05期);全文 *
基于关键谓词的程序错误定位方法;辛良;姜淑娟;;计算机工程(第14期);全文 *

Also Published As

Publication number Publication date
CN114661503A (zh) 2022-06-24

Similar Documents

Publication Publication Date Title
US10055338B2 (en) Completing functional testing
Zhang et al. Automated diagnosis of software configuration errors
AU2015315203B2 (en) Conditional validation rules
Bavota et al. Automating extract class refactoring: an improved method and its evaluation
US11386154B2 (en) Method for generating a graph model for monitoring machinery health
US6978443B2 (en) Method and apparatus for organizing warning messages
US20070006037A1 (en) Automated test case result analyzer
EP2960799A1 (en) Defect localization in software integration tests
Zhang et al. Diagnosing type errors with class
GB2475161A (en) Incremental implementation of undo/redo support in legacy applications
US20160342720A1 (en) Method, system, and computer program for identifying design revisions in hardware design debugging
CN114661503B (zh) 基于程序切片的软件关联配置错误诊断方法及装置
Zhang Confdiagnoser: An automated configuration error diagnosis tool for java software
Aleti et al. E-APR: Mapping the effectiveness of automated program repair techniques
US20200334092A1 (en) System and method for identifying a cause of a failure in operation of a chip
CN114691403A (zh) 一种服务器故障诊断方法、装置、电子设备及存储介质
US11163674B1 (en) System and method for identifying a faulty component in a spectrum ambiguity group
Zaman et al. Scminer: Localizing system-level concurrency faults from large system call traces
US10546080B1 (en) Method and system for identifying potential causes of failure in simulation runs using machine learning
CN112732588A (zh) 一种基于云计算的人工智能代码验证系统、方法和装置
Cao et al. The improved dynamic slicing for spectrum-based fault localization
US20160246708A1 (en) Recording an application test
Biswas et al. A regression test case prioritization technique targeting ‘hard to detect’faults
CN115576851B (zh) 一种结合动态切片的软件多故障聚类定位方法及装置
Chen et al. Proverr: System level statistical fault diagnosis using dependency model

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
CB03 Change of inventor or designer information

Inventor after: Hu Xue

Inventor after: Xu Guangquan

Inventor after: Liu Jian

Inventor before: Hu Xue

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant