CN109522206A - 异常数据定位方法、装置、计算机设备及存储介质 - Google Patents
异常数据定位方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109522206A CN109522206A CN201811123199.1A CN201811123199A CN109522206A CN 109522206 A CN109522206 A CN 109522206A CN 201811123199 A CN201811123199 A CN 201811123199A CN 109522206 A CN109522206 A CN 109522206A
- Authority
- CN
- China
- Prior art keywords
- data
- backstage
- abnormal
- abnormal data
- exception type
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种异常数据定位方法、装置、终端设备及存储介质,所述方法包括:获取后台流转数据;采用基于Java的map.tostring()反向转换的算法对后台流转数据进行数据转换,得到map对象;基于map对象,通过断点调试的方式检测后台流转数据的数据流向,得到后台流转数据的异常类型,根据异常类型进行异常数据定位,得到异常数据位置。通过对map对象进行检测,不仅提高了异常数据定位的效率而且提高了异常数据定位的准确率。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种异常数据定位方法、装置、计算机设备及存储介质。
背景技术
随着互联网行业的发展,互联网的业务越来越多,其中的业务流程越来越复杂,一旦某一环节出错,需要及时进行问题排查。现有的方法是通过对错误日志进行分析进行排查,由于每个开发人员编写代码的风格不一致,导致仅仅依靠错误日志难以进行问题的快速准确定位和排查,而且在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全、没有相关背景、不明其义,使得排查解决问题成为非常不方便或者耗时的操作。
发明内容
本发明实施例提供一种异常数据定位方法、装置、计算机设备及存储介质以解决***异常问题定位效率不高的问题。
一种异常数据定位方法,包括:
获取后台流转数据;
采用map.tostring()反向转换的算法对所述后台流转数据进行数据转换,得到map对象;
基于所述map对象,通过断点调试的方式检测所述后台流转数据的数据流向,得到所述后台流转数据的异常类型;
若所述异常类型为第一异常类型,则通过对所述map对象进行参数校验和前置条件校验来进行异常数据定位,得到异常数据位置,其中,所述第一异常类型是业务逻辑异常;
若所述异常类型为第二异常类型,则通过获取短函数并传入所述map对象中的map参数进行异常数据定位,得到异常数据位置,其中,所述第二异常类型是程序非预期异常。
一种异常数据定位装置,包括:
流转数据获取模块,用于获取后台流转数据;
map对象转换模块,用于采用map.tostring()反向转换的算法对所述后台流转数据进行数据转换,得到map对象;
异常类型获取模块,用于基于所述map对象,通过断点调试的方式检测所述后台流转数据的数据流向,得到所述后台流转数据的异常类型;
第一定位数据获取模块,用于若所述异常类型为第一异常类型,则通过对所述map对象进行参数校验和前置条件校验来进行异常数据定位,得到异常数据位置,其中,所述第一异常类型是业务逻辑异常;
第二定位数据获取模块,用于若所述异常类型为第二异常类型,则通过获取短函数并传入所述map对象中的map参数进行异常数据定位,得到异常数据位置,其中,所述第二异常类型是程序非预期异常。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述异常数据定位方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述异常数据定位方法的步骤。
上述异常数据定位方法、装置、计算机设备及存储介质中,首先获取后台流转数据,作为异常数据定位的基础。然后采用map.tostring()反向转换的算法将后台流转数据进行数据转换,得到map对象,以便后续采用map对象作为流转程序的入口参数进行断点调试。接着,基于map对象,采用断点调试方法检测后台流转数据的数据流向,得到后台流转数据的异常类型,省去了依据异常进行逆推的繁琐过程。最后,根据异常类型进行异常数据定位,得到异常数据位置。不仅提高了异常数据定位的效率,而且提高了异常数据定位的准确率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的异常数据定位方法的应用环境示意图;
图2是本发明实施例提供的异常数据定位方法一示例图;
图3是本发明实施例提供的异常数据定位方法的另一示例图;
图4是本发明实施例提供的异常数据定位方法的另一示例图;
图5是本发明实施例提供的异常数据定位方法的另一示例图;
图6是本发明实施例提供的异常数据定位装置的一原理框图;
图7是本发明实施例提供的异常数据定位装置的另一原理框图;
图8是本发明实施例提供的异常数据定位装置的另一原理框图;
图9是本发明实施例提供的计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的异常数据定位方法,可应用在如图1的应用环境中,其中,客户端通过网络与服务端进行通信,服务端接收客户端发送的后台流转数据,然后将后台流转数据转换成map对象,采用断点调试方法检测后台流转数据的数据流向,得到后台流转数据的异常类型,进而根据异常类型进行异常数据定位。其中,客户端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,以该方法应用于图1中的服务端为例进行说明,包括如下步骤:
S10:获取后台流转数据。
其中,后台流转数据是指与***后台程序运行时产生的一系列数据的组合数据。具体地,***后台程序通常包括多个模块,不同模块在运行过程中会产生大量数据,而这其中的一些数据之间存在关联性,按照预设的组合方式,将这些具有关联性的数据组合起来,即得到后台流转数据。
在一具体实施方式中,一***后台程序为意健险承保***,该意健险承保***是用于对投保人承担保单合同规定的保险责任***,它在运转的过程中产生的数据包括但不限于:出单模块的数据、批单模块的数据、核保模块的数据和产品模块的数据等其它模块的数据,不同模块的数据之间具有复杂的业务逻辑,例如,出单模块的数据包括柜面出单数据、合作伙伴出单数据、见费出单数据和非见费出单数据等,而柜面出单数据包括但不限于:保单号、投保人姓名、险种和保费金额等数据,同时,在核保模块的数据中,也包括柜面出单数据中的保单号、投保人姓名、险种和保费金额等数据,这些具有关联的数据组成了该意健险承保***的后台流转数据。
可以理解地,后台流转数据较为复杂,通常是由不同结构的数据经过多种嵌套方式生成的组合数据。
例如,如表一所示的部分后台流转数据中,在结构上是map嵌套list再嵌套map这种复杂的形式(A为map结构即“{}”,B为list结构即“[]”并且嵌套在A中,C为list结构且嵌套在B中,D为map结构且嵌套在C的list结构中)。
表一.部分后台流转数据
可以理解地,虽然后台流转数据在运行过程中会生成日志,该日志用来记录每一条后台流转数据的状况,但由于后台流转数据复杂多变的特征,使得仅仅根据日志进行排查不仅复杂耗时而且存在错误风险。因此,获取后台流转数据,是进行异常数据定位的基础。
S20:采用map.tostring()反向转换的算法对后台流转数据进行数据转换,得到map对象。
其中,map对象是编程语言中的的一种数据接口,map对象中的每一个元素包含一个键对象(key)和值对象(value),它们成对出现,键对象可以看成是值对象的索引,键对象在集合中不可重复。map对象是一个个键值对,如果对一个键名相同的键赋值,则后面的键值对会覆盖前面的键值对。
其中,map.tostring()是一种返回字符串的方法,即该方法会返回一个“以文本方式表示”此对象的字符串,从而使得返回的结果的信息表达式不仅简明而且易于读懂。在本实施例中,map.tostring()是指通过键对象来返回键对象对应的值对象的方法,由于对于不同数据类型的tostring()方法往往不能满足简单明了的需求,需要反向转换该方法,因此采用本实施例中的map.tostring()反向转换算法。
在本实施例中,为了后续可快速对异常数据进行定位,需先获取后台流转数据的键对象,因而,本实施例采用map.tostring()反向转换的算法来获取后台流转数据的键对象,即将map.tostring()的对象中的字符串再次翻转到(反向转换到)对应的map对象中以得到map类型对象的算法。也即将复杂的结构用map对象的键值对来表示,这种方式不仅可以将复杂的后台流转数据采用结构化的方式简化表达出来,还可以避免一些异常。
例如,在一具体实施方式中,把list集合转换为json串返回:
List<order>orders=orderService.findAll();
JSONArray array=JSONArray.fromObject(orders);
可能出现“Java.lang.StackOverflowError”的异常,该异常是由于当前线程的栈满了,在集合类型上无限的循环造成。因此后台流转数据的日志会出现异常记载信息“There is a cycle in the hierarchy!”该异常是由于插件内部会无限拆解传入的对象,直到没有可拆解为止。由此可见,当传入的对象有外键关系,或者相互引用,那么内部就会死循环,从而抛出异常。采用基于Java的map.tostring()反向转换的算法把对象都变成map对象,由于map对象中键对象不能重复,因此克服了程序内部死循环的问题,从而更加方便后续进行异常数据定位,省去重复检查定位的操作,提高异常数据定位的效率。
S30:基于map对象,通过断点调试的方式检测后台流转数据的数据流向,得到后台流转数据的异常类型。
其中,断点调试是Java的异常调试模式(debug模式)中的一种调试方式,它是通过设置断点对***程序进行调试,以便快速检查异常出现的原因的方法,用于定位异常,常用的断点调试包括但不限于:INT3断点、硬件断点、内存断点、消息断点或条件断点等。其中,debug模式是Java开发工具自身携带的异常排除功能。
其中,数据流向是指反映数据在***的传递过程的线路。具体地通过在debug模式下进行,采用step-by-step(逐过程调试)的方式获取。
在本实施例中,在异常数据产生之前,通过在后台流转数据的预设位置设置断点,并使用断点调试方式,对每一过程进行逐过程调试,使得通过后台流转数据的数据流向,快速确定后台流转数据的异常类型。
在本实施例中,通过采用step-by-step的方式进行断点调试,可以清晰地对数据流程走向进行监视,并根据数据流程走向实现快速进行异常数据定位,省去了依据异常进行逆推的繁琐过程。
S40:若异常类型为第一异常类型,则通过对map对象进行参数校验和前置条件校验来进行异常数据定位,得到异常数据位置,其中,第一异常类型是业务逻辑异常;
其中,异常类型是指***程序中的异常的类型,包括第一异常类型。例如,若一组数据中的某个或某几个错误数据相互作用最终产生的异常,此时,仅根据异常的提示信息很难判断具体是什么数据传入有误,该异常即为业务逻辑异常(第一异常类型)。
其中,参数校验是指对map对象中的map参数进行校验的过程,用于检验map参数是否有异常。前置条件校验是指对map对象中map参数对应的前置条件进行校验的过程,前置条件包括基本数学运算(如加法运算中的溢出情形等、除法运算中对应的除数为零的情形等)、日期格式和文本格式等。
具体地,若异常类型为第一异常类型,则对map对象进行参数校验和前置条件校验,根据校验结果来进行异常数据定位,对map参数校验的校验结果包括参数正常和参数不正常。对前置条件校验的校验结果包括前置条件正常和前置条件不正常。
值得说明的是,在本实施例中,对map对象进行参数校验和前置条件校验中,若存在参数不正常或前置条件不正常,则确定该map参数为异常数据位置或该前置条件为异常产生的位置。
例如,一前置条件为日期,在进行前置条件校验时,检测到日期为“2018-8-32”,容易理解地,该前置条件检验结果为日期这个前置条件不正常。
S50:若异常类型为第二异常类型,则通过获取短函数并传入map对象中的map参数进行异常数据定位,得到异常数据位置,其中,第二异常类型是程序非预期异常。
其中,第二异常类型是程序非预期异常。例如,若在***的程序中,传入错误数据,或者漏传关键数据进入了非预期的流程分支导致的异常,该异常即为程序非预期异常(第二异常类型)。
其中,短函数是指不超过预设行数的函数,例如预设行数可以是50行,用于对***程序中的异常进行定位。具体地,通过将map对象中的map参数作为短函数的入参,执行短函数后,根据短函数的结果进行比较,进而实现异常定位。
具体地,若异常类型为第二异常类型,例如,业务逻辑耦合紧密,随着软件产品一步步发展,各种逻辑关系错综复杂,难以看到全局状况,导致局部修改影响波及到全局范围,造成不可预知的问题。通过获取短函数如无状态函数,只读全局状态,依据相同的前提条件总是输出相同的结果,传入map参数,进行后台流转程序的检测,从而进行异常数据定位。
具体地,若异常类型为第一异常类型,则***程序中的异常被定位在后台流转数据对应的测试接口中,具体地,第一异常类型体现在后台流转数据的数据异常问题上。若异常类型为第二异常类型,则***程序中的异常被定位在数据流向对应的测试接口中,具体地,第二异常类型数据流向的逻辑是否合理的问题上。可以理解地,由于第一异常类型是业务逻辑异常,所以在后台流转数据发生错误时,会产生该异常。第二异常类型是非预期异常,所以在断点调试时,会发生中断,抛出异常,产生第二异常类型。根据异常类型进行异常数据定位不仅快速而且提高了异常数据定位的准确率。
本实施例中,首先获取后台流转数据,作为异常数据定位的基础。然后采用map.tostring()反向转换的算法将后台流转数据进行数据转换,得到map对象,以便后续采用map对象作为流转程序的入口参数进行断点调试。接着,基于map对象,采用断点调试方法检测后台流转数据的数据流向,得到后台流转数据的异常类型,省去了依据异常进行逆推的繁琐过程。最后,根据异常类型进行异常数据定位,得到异常数据位置,不仅提高了异常数据定位的效率而且提高了异常数据定位的准确率。
在一实施例中,如图3所示,步骤S20中,采用map.tostring()反向转换的算法将后台流转数据进行数据转换,得到map对象,包括以下步骤:
S21:根据第一预设字符集,采用递归算法将后台流转数据按照由内而外的顺序分解为N个结构的节点数据,其中,N为正整数。
其中,第一预设字符集是指预先设置的字符集,用于对后台流转数据进行分解,进而简化后台流转数据。节点数据是指将后台流转数据进行分解后得到的N个分解后的数据,其中,N为正整数。
其中,递归算法是指直接或者间接地调用自身的算法,通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推的方式去解决,具体地,将待求解的问题分解为若干个子问题,按顺序求解子问题,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题的解就是初始问题的解。用于解决一大类问题。
例如,若设置第一预设字符集为“{”和“}”,则利用递归算法,根据该预设字符集将后台流转数据由内而外,分解为N个“{}”节点数据。可以理解地,分解后得到的N个“{}”节点数据比后台流转数据更加简洁易读。
S22:根据第二预设字符集,采用递归算法将N个节点数据按照由内而外的顺序分解为M个最简数据,其中,M为正整数。
其中,第二预设字符集也是指预先设置的字符集,用于对节点数据进行分解,进而得到无法继续分解的数据。最简数据是最小单元数据。
例如,若设置第二预设字符集为“[”和“]”,则利用递归算法,根据该预设字符集将N个节点数据由内而外分解为M个“[]”最简数据。M和N的具体数量依实际情况而定,此处不做限定。
可以理解地,M个“[]”最简数据是最小单元,更加利于后续对后台流转数据的进一步处理。
值得说明的是,第一预设字符集和第二字符集在后台流转数据中可以嵌套存在,具体可依实际情况而定,此处不作限定。
例如,在一具体实施方式中,第一预设字符集为“{”和“}”,第二预设字符集为“[”和“]”,一后台流转数据为:{数据11[{数据12--数据13}数据14]{数据15}},经过第一预设字符集和第二预设字符集分解后,得到:“数据11”、“数据12--数据13”、“数据14”和“数据15”。
S23:根据预设标识符对M个最简数据进行循环分割,生成map对象。
其中,预设标识符是指预先设置的符号,用于作为对最简数据进行分割的依据。
例如,预设标识符为“--”,步骤S22中得到的一个最简数据为“数据A--数据B”,因而,通过预设标识符“--”可将该最简数据分割为两个数据,分别为“数据A”和“数据B”。
循环分割是指对最简数据执行多次循环,直到最简数据不能继续分割为止。进而分割成map对象的处理过程。继续以预设标识符“--”为例,步骤S22中获取到的另一最简数据为:“数据1--数据2--数据3--数据4”,使用预设标识符“--”对该最简数据进行第一次分割,得到“数据1”和“数据2--数据3--数据4”,使用该预设标识符对“数据2--数据3--数据4”进行第二次分割得到“数据2”和“数据3--数据4”,使用该预设标识符对“数据3--数据4”进行第三次分割得到“数据3”和“数据4”。
本实施例中,首先根据第一预设字符集,采用递归算法将后台流转数据按照由内而外的顺序分解为N个结构的节点数据,然后根据第二预设字符集,采用递归算法将N个节点数据按照由内而外的顺序分解为M个最简数据,更加利于后续对后台流转数据的进一步处理。最后,根据预设标识符对M个最简数据进行循环分割,生成map对象,由于map对象中的键对象不能重复,因此克服了死循环问题,从而更加方便地进行异常数据定位。
在一实施例中,如图4所示,步骤S10中,获取后台流转数据,具体包括如下步骤:
S11:获取后台流转数据对应的日志文件***的路径。
其中,路径(path)是指存放文件的地址。日志文件***(journaling filesystem)是一个具有故障恢复能力的文件***,在这个文件***中,因为对目录以及位图的更新信息总是在原始的磁盘日志被更新之前写到磁盘上的一个连续的日志上,所以它保证了数据的完整性,在日志文件***主要存放的文件为日志文件,该日志文件用于记录后台流转数据的各个参数和运行信息。具体地,由于jsp或servlet在执行状态时没有当前路径概念,所以使用日志文件***的文件时要给出相对于当前jsp或servlet的路径转化成为一个绝对的文件***路径。
具体地,使用路径获取工具servletcontext.getrealpath(string)获取后台流转数据对应的日志文件***的路径。
在本实施例中,日志文件***的路径是指存放日志文件***的文件的位置,路径包括绝对路径和相对路径,作为一种优选方式,本实施例采用绝对路径,以方便快速准确定位日志文件***的文件位置。
S12:根据日志文件***的路径,采用log4j工具输出后台流转数据。
其中,log4j工具是指Apache的开源项目的日志组件,用于提供后台***的日志记录,适应于多种平台。该组件将日志输出到console窗口、输出到文本文件或者输出到数据库中,以便开发测试人员进行后台流转数据查询和分析等。
具体地,基于日志文件***的路径,找到日志文件***的入口(后台流转数据所在日志***的标识),然后使用log4j工具从日志文件***的入口的配置文件中提取后台流转数据,即按log4j工具来操作配置文件就能得到后台流转数据,从而保证了后台流转数据的准确获取,并且根据路径查找日志文件的配置文件,获取各个程序分支的参数,从而实现准确快速定位。
本实施例中,首先获取后台流转数据对应的日志文件***的路径,然后根据路径采用log4j工具输出后台流转数据,按log4j工具来操作配置文件就能得到后台流转数据,从而保证了后台流转数据的准确获取,并且根据该日志文件***的路径查找日志文件的配置文件,获取各个程序分支的参数,从而实现准确快速定位。
在一实施例中,如图5所示,步骤S30中,基于map对象,采用断点调试方法检测后台流转数据的数据流向,得到异常类型,具体包括如下步骤:
S31:获取map对象对应的接口类。
其中,接口类是指Java中的规定的方法,具体的功能需要子类实现。在断点调试时,调用map对象对应的接口类,通过该接口类,获取检测的入口。
S32:通过断点调试的方式,将map对象作为接口类的传入参数对后台流转数据进行检测,得到后台流转数据的数据流向。
其中,传入参数是指接口类的参数。该传入参数可以以缓存的形式存储,或者存在数据库中。本实施例中,是以缓存的形式存储的map对象。
具体地,***程序会根据传入参数,启动检测进程,进入相应流程分支进行检测,获得后台流转数据的数据流向。
在断点调试时,编译器会记录调试信息,并加入测试代码,方便快速进行检测。
本实施例中,通过将map对象作为接口类的传入参数,通过断点调试的方式进行检测,得到了后台流转数据的数据流向,由于断点调试模式下,编译器会记录调试信息,使得获取的数据流向更为准确。
S33:基于后台流转数据的数据流向,得到异常类型。
具体地,通过后台流转数据的数据流向确定异常的类型。例如,数据流向中断,则异常类型确定为第二异常类型,若数据流向中断存在不在阈值范围内的数据,则异常类型确定为第一异常类型。可以理解地,本实施例中的数据流向都是通过map对象的传入参数进行检测得到,因此,基于数据流向,得到异常类型的准确率得以提高。
本实施例中,首先获取断点调试对应的接口类,从而获取检测的入口。接着,将map对象作为接口类的传入参数,在断点调试方法的debug模式中进行检测,得到后台流转数据的数据流向,由于debug模式下,编译器会记录调试信息,使得获取的数据流向更为准确。最后,基于数据流向,得到异常类型,数据流向都是通过map对象的传入参数进行检测得到,使得异常类型获取的准确率得以提高。
在一实施例中,在步骤S40之后,或者,在步骤S50之后,该异常数据定位方法还包括:
采用预设的解决方案对异常数据位置的异常数据进行异常处理。
其中,预设的解决方案是指预先设定的用于对异常数据位置的异常数据进行异常处理的技术方案。可以是异常数据修改的解决方案也可以是正则表达式进行逻辑验证的解决方案。
具体地,确定了异常类型后,异常数据位置被定位出来,采用预设的解决方案对异常数据位置的异常数据进行处理,从而使得异常数得到较好的解决。
本实施例中,采用预设的解决方案对异常数据位置的异常数据进行异常处理,使得异常数得到较好的解决。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种异常数据定位装置,该异常数据定位装置与上述实施例中异常数据定位方法一一对应。如图6所示,该异常数据定位装置包括流转数据获取模块10、map对象转换模块20、异常类型获取模块30、第一定位数据获取模块40和第二定位数据获取模块50。各功能模块详细说明如下:
流转数据获取模块10,用于获取后台流转数据;
map对象转换模块20,用于采用基于Java的map.tostring()反向转换的算法对后台流转数据进行数据转换,得到map对象;
异常类型获取模块30,用于基于map对象,通过断点调试的方式检测后台流转数据的数据流向,得到后台流转数据的异常类型;
第一定位数据获取模块40,用于若异常类型为第一异常类型,则通过对map对象进行参数校验和前置条件校验来进行异常数据定位,得到异常数据位置,其中,第一异常类型是业务逻辑异常;
第二定位数据获取模块50,用于若异常类型为第二异常类型,则通过获取短函数并传入map对象中的map参数进行异常数据定位,得到异常数据位置,其中,第二异常类型是程序非预期异常。
具体地,如图7所示,map对象转换模块20包括第一字符集获取单元21、第二字符集获取单元22和map对象获取单元23。
第一字符集获取单元21,用于根据第一预设字符集,采用递归算法将后台流转数据按照由内而外的顺序分解为N个结构的节点数据,其中,N为正整数;
第二字符集获取单元22,用于根据第二预设字符集,采用递归算法将N个节点数据按照由内而外的顺序分解为M个最简数据,其中,M为正整数;
map对象获取单元23,用于根据预设标识符对M个最简数据进行循环分割,生成map对象。
具体地,如图8所示,流转数据获取模块10包括路径获取单元11和流转数据获取单元12。
路径获取单元11,用于获取后台流转数据对应的日志文件***的路径;
流转数据获取单元12,用于根据日志文件***的路径,采用log4j工具输出后台流转数据。
具体地,异常类型获取模块包括接口类获取单元、数据流向获取单元和异常类型获取单元。
接口类获取单元,用于获取map对象对应的接口类;
数据流向获取单元,用于通过断点调试的方式,将map对象作为接口类的传入参数对后台流转数据进行检测,得到后台流转数据的数据流向;
异常类型获取单元,用于基于后台流转数据的数据流向,得到异常类型。
具体地,异常数据定位装置还包括:采用预设的解决方案对异常数据位置的异常数据进行异常处理。
关于异常数据定位装置的具体限定可以参见上文中对于异常数据定位方法的限定,在此不再赘述。上述异常数据定位装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储后台流转数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种异常数据定位方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例异常数据定位方法的步骤,例如图2所示的步骤S10至步骤S50。或者,处理器执行计算机程序时实现上述实施例异常数据定位装置的各模块/单元的功能,例如图6所示的模块10至模块50。为避免重复,这里不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例异常数据定位方法的步骤,或者,计算机程序被处理器执行时实现上述实施例异常数据定位装置的各模块/单元的功能,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种异常数据定位方法,其特征在于,所述异常数据定位方法包括:
获取后台流转数据;
采用map.tostring()反向转换的算法对所述后台流转数据进行数据转换,得到map对象;
基于所述map对象,通过断点调试的方式检测所述后台流转数据的数据流向,得到所述后台流转数据的异常类型;
若所述异常类型为第一异常类型,则通过对所述map对象进行参数校验和前置条件校验来进行异常数据定位,得到异常数据位置,其中,所述第一异常类型是业务逻辑异常;
若所述异常类型为第二异常类型,则通过获取短函数并传入所述map对象中的map参数进行异常数据定位,得到异常数据位置,其中,所述第二异常类型是程序非预期异常。
2.如权利要求1所述的异常数据定位方法,其特征在于,所述采用map.tostring()反向转换的算法对所述后台流转数据进行数据转换,得到map对象,具体包括:
根据第一预设字符集,采用递归算法将所述后台流转数据按照由内而外的顺序分解为N个结构的节点数据,其中,N为正整数;
根据第二预设字符集,采用递归算法将N个所述节点数据按照由内而外的顺序分解为M个最简数据,其中,M为正整数;
根据预设标识符对M个所述最简数据进行循环分割,生成所述map对象。
3.如权利要求1所述的异常数据定位方法,其特征在于,所述获取后台流转数据包括:
获取所述后台流转数据对应的日志文件***的路径;
根据所述日志文件***的路径,采用log4j工具输出所述后台流转数据。
4.如权利要求1所述的异常数据定位方法,其特征在于,所述基于所述map对象,通过断点调试的方式检测所述后台流转数据的数据流向,得到异常类型包括:
获取所述map对象对应的接口类;
通过所述断点调试的方式,将所述map对象作为所述接口类的传入参数对所述后台流转数据进行检测,得到所述后台流转数据的数据流向;
基于所述后台流转数据的数据流向,得到所述异常类型。
5.如权利要求1所述的异常数据定位方法,其特征在于,在所述若所述异常类型为第二异常类型,则通过获取短函数并传入所述map对象中的map参数进行异常数据定位的步骤之后,或者,在所述若所述异常类型为第一异常类型,则通过对所述map对象进行参数校验和前置条件校验来进行异常数据定位的步骤之后,所述异常数据定位方法还包括:
采用预设的解决方案对所述异常数据位置的异常数据进行异常处理。
6.一种异常数据定位装置,其特征在于,所述异常数据定位装置包括:
流转数据获取模块,用于获取后台流转数据;
map对象转换模块,用于采用基于Java的map.tostring()反向转换的算法对所述后台流转数据进行数据转换,得到map对象;
异常类型获取模块,用于基于所述map对象,通过断点调试的方式检测所述后台流转数据的数据流向,得到所述后台流转数据的异常类型;
第一定位数据获取模块,用于若所述异常类型为第一异常类型,则通过对所述map对象进行参数校验和前置条件校验来进行异常数据定位,得到异常数据位置,其中,所述第一异常类型是业务逻辑异常;
第二定位数据获取模块,用于若所述异常类型为第二异常类型,则通过获取短函数并传入所述map对象中的map参数进行异常数据定位,得到异常数据位置,其中,所述第二异常类型是程序非预期异常。
7.如权利要求6所述的异常数据定位装置,其特征在于,所述map对象转换模块,包括:
第一字符集获取单元,用于根据第一预设字符集,采用递归算法将所述后台流转数据按照由内而外的顺序分解为N个结构的节点数据,其中,N为正整数;
第二字符集获取单元,用于根据第二预设字符集,采用递归算法将N个所述节点数据按照由内而外的顺序分解为M个最简数据,其中,M为正整数;
map对象获取单元,用于根据预设标识符对M个所述最简数据进行循环分割,生成所述map对象。
8.如权利要求6所述的异常数据定位装置,其特征在于,所述流转数据获取模块,包括:
路径获取单元,用于获取所述后台流转数据对应的日志文件***的路径;
流转数据获取单元,用于根据所述日志文件***的路径,采用log4j工具输出所述后台流转数据。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述异常数据定位方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述异常数据定位方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811123199.1A CN109522206B (zh) | 2018-09-26 | 2018-09-26 | 异常数据定位方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811123199.1A CN109522206B (zh) | 2018-09-26 | 2018-09-26 | 异常数据定位方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522206A true CN109522206A (zh) | 2019-03-26 |
CN109522206B CN109522206B (zh) | 2023-09-26 |
Family
ID=65769870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811123199.1A Active CN109522206B (zh) | 2018-09-26 | 2018-09-26 | 异常数据定位方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522206B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020215543A1 (zh) * | 2019-04-26 | 2020-10-29 | 平安科技(深圳)有限公司 | 数据辅助定位方法、装置、计算机设备及存储介质 |
CN117955746A (zh) * | 2024-03-26 | 2024-04-30 | 深圳市天富利信息技术有限公司 | 基于物联网平台的数据流转方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216825A (zh) * | 2013-06-04 | 2014-12-17 | 北京神州泰岳软件股份有限公司 | 问题定位方法及*** |
US20160011957A1 (en) * | 2014-07-08 | 2016-01-14 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
US20160124835A1 (en) * | 2014-10-29 | 2016-05-05 | Microsoft Corporation | Diagnostic workflow for production debugging |
CN106201892A (zh) * | 2016-07-20 | 2016-12-07 | 中国航空工业集团公司航空动力控制***研究所 | 用于嵌入式软件的异常中断源定位检测方法 |
CN107678869A (zh) * | 2017-07-26 | 2018-02-09 | 上海壹账通金融科技有限公司 | 客户端异常定位方法、装置、计算机设备和存储介质 |
CN107832227A (zh) * | 2017-11-24 | 2018-03-23 | 平安科技(深圳)有限公司 | 业务***的接口参数测试方法、装置、设备和存储介质 |
CN108427613A (zh) * | 2018-03-12 | 2018-08-21 | 平安普惠企业管理有限公司 | 异常接口定位方法、装置、计算机设备和存储介质 |
CN108491320A (zh) * | 2018-03-05 | 2018-09-04 | 平安普惠企业管理有限公司 | 应用程序的异常分析方法、装置、计算机设备和存储介质 |
-
2018
- 2018-09-26 CN CN201811123199.1A patent/CN109522206B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216825A (zh) * | 2013-06-04 | 2014-12-17 | 北京神州泰岳软件股份有限公司 | 问题定位方法及*** |
US20160011957A1 (en) * | 2014-07-08 | 2016-01-14 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
US20160124835A1 (en) * | 2014-10-29 | 2016-05-05 | Microsoft Corporation | Diagnostic workflow for production debugging |
CN106201892A (zh) * | 2016-07-20 | 2016-12-07 | 中国航空工业集团公司航空动力控制***研究所 | 用于嵌入式软件的异常中断源定位检测方法 |
CN107678869A (zh) * | 2017-07-26 | 2018-02-09 | 上海壹账通金融科技有限公司 | 客户端异常定位方法、装置、计算机设备和存储介质 |
CN107832227A (zh) * | 2017-11-24 | 2018-03-23 | 平安科技(深圳)有限公司 | 业务***的接口参数测试方法、装置、设备和存储介质 |
CN108491320A (zh) * | 2018-03-05 | 2018-09-04 | 平安普惠企业管理有限公司 | 应用程序的异常分析方法、装置、计算机设备和存储介质 |
CN108427613A (zh) * | 2018-03-12 | 2018-08-21 | 平安普惠企业管理有限公司 | 异常接口定位方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
金大海;宫云战;杨朝红;肖庆;: "运行时异常对软件静态测试的影响研究", 计算机学报, no. 06 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020215543A1 (zh) * | 2019-04-26 | 2020-10-29 | 平安科技(深圳)有限公司 | 数据辅助定位方法、装置、计算机设备及存储介质 |
CN117955746A (zh) * | 2024-03-26 | 2024-04-30 | 深圳市天富利信息技术有限公司 | 基于物联网平台的数据流转方法、装置、设备及存储介质 |
CN117955746B (zh) * | 2024-03-26 | 2024-05-28 | 深圳市天富利信息技术有限公司 | 基于物联网平台的数据流转方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109522206B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795801B2 (en) | Time travel source code debugger incorporating asynchronous collaboration | |
Sahoo et al. | Using likely invariants for automated software fault localization | |
Gyimóthy et al. | Empirical validation of object-oriented metrics on open source software for fault prediction | |
Panichella et al. | Would static analysis tools help developers with code reviews? | |
US9317399B2 (en) | Policy evaluation based upon dynamic observation, static analysis and code change history | |
Muccini et al. | Using software architecture for code testing | |
US9898387B2 (en) | Development tools for logging and analyzing software bugs | |
Wang et al. | Automated path generation for software fault localization | |
US8776029B2 (en) | System and method of software execution path identification | |
CN110704297B (zh) | 代码评审方法、装置、计算机设备及存储介质 | |
EP2975527A2 (en) | A method for tracing computer software | |
US10037260B2 (en) | System for expression evaluation at debug time | |
CN109522206A (zh) | 异常数据定位方法、装置、计算机设备及存储介质 | |
Hughes | How to Specify It! A Guide to Writing Properties of Pure Functions | |
Wi et al. | HiddenCPG: large-scale vulnerable clone detection using subgraph isomorphism of code property graphs | |
Hofer et al. | Combining slicing and constraint solving for better debugging: The CONBAS approach | |
Wong et al. | An execution slice and inter-block data dependency-based approach for fault localization | |
Eloussi | Determining flaky tests from test failures | |
Zhang et al. | Fault localization based on dynamic slicing via JSlice for Java programs | |
Timperley | Advanced techniques for search-based program repair | |
US20160232074A1 (en) | Detecting uninitialized memory references | |
Sharrad et al. | Delta debugging type errors with a blackbox compiler | |
CN112464242A (zh) | 一种网页平台漏洞采集方法、***、终端及存储介质 | |
Kumar et al. | An empirical study of bad smell in code on maintenance effort | |
KANG et al. | A Quantitative and Qualitative Evaluation of LLM-Based Explainable Fault Localization |
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 |