CN112131132A - 基于图与概率的问题代码协助定位方法、装置和存储介质 - Google Patents
基于图与概率的问题代码协助定位方法、装置和存储介质 Download PDFInfo
- Publication number
- CN112131132A CN112131132A CN202011084186.5A CN202011084186A CN112131132A CN 112131132 A CN112131132 A CN 112131132A CN 202011084186 A CN202011084186 A CN 202011084186A CN 112131132 A CN112131132 A CN 112131132A
- Authority
- CN
- China
- Prior art keywords
- function
- graph
- calling
- functions
- code
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000006870 function Effects 0.000 claims abstract description 158
- 238000004458 analytical method Methods 0.000 claims abstract description 21
- 238000005314 correlation function Methods 0.000 claims abstract description 19
- 230000004807 localization Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 6
- 238000012423 maintenance Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于图与概率的问题代码协助定位方法、装置和存储介质,涉及软件测试维护技术领域。所述方法通过将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;然后查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系;接下来根据调用次数的大小按序输出调用问题函数的关联函数。本发明方案使用图及概率的算法,依据概率计算出最可能出现问题的代码函数并对其排序后提供给使用者参考,从而有效协助工程师进行问题分析,减少了通过在函数中添加打印语句的方式进行问题查找,提高了工程师分析处理问题的效率。
Description
技术领域
本发明实施例涉及软件测试维护技术领域,具体来说涉及一种基于图与概率的问题代码协助定位方法、装置和存储介质。
背景技术
图论以图为研究对象,是数学的一个分支。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。其中,用点代表事物,用连接两点的线表示相应的两个事物间具有这种关系。
在开发程序的过程中,除了静态分析代码的各种工具可以帮助我们检查部分代码的问题外,几乎没有工具能够协助我们分析程序在运行过程中各种隐藏的代码问题或逻辑问题。这些问题很多会在运行的过程中随机出现,有些是长时间运行,有些是在某种特定场景下运行,而根据运行错误的提示进行问题分析时,一是极大可能没有多余的线索供我们分析,二是有些问题不知道其产生的原因,所以很难复现。针对上述问题,我们现有的处理方法只能是通过在尽可能多的地方添加打印语句,然后再尝试复现来进行分析处理。
基于现有技术中存在的不足,本发明提供一种基于图与概率的问题代码协助定位方法、装置和存储介质,协助工程师进行问题分析,减少在函数中添加打印语句,提高分析处理问题的效率。
发明内容
本发明实施例提供了一种基于图与概率的问题代码协助定位方法、装置和存储介质,根据函数之间的调用关系和调用次数,快速有效的确定出现问题的函数及与其相关联的函数,协助工程师进行问题分析,提高处理效率。
为实现上述目的,本发明公开了如下技术方案:
本发明一方面提供一种基于图与概率的问题代码协助定位方法,所述方法包括以下步骤:
将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;
查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系;
根据调用次数的大小按序输出调用问题函数的关联函数。
基于上述方案,进一步的,所述将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中,包括下述步骤:
静态扫描代码,分析各个函数之间的相互调用关系及调用次数;
采用深度优先方式生成图结构,并以二维数组形式保存在计算机内存中;
将各个函数的调用次数记录在图中对应函数的节点中,并将函数名设置为图的节点属性,函数之间的调用关系及调用次数设置为图的边属性。
进一步的,所述查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系,包括下述步骤:
当程序运行出现问题时,查询问题所在的函数名称;
将问题函数的名称导入存储图的内存中,遍历全图查找调用问题函数的关联函数;
将关联函数基于调用问题函数的次数进行排序。
如上所述的基于图与概率的问题代码协助定位方法,所述根据调用次数的大小按序输出调用问题函数的关联函数后,依据问题函数与关联函数之间的关系,进行问题代码的协助定位。
本发明另一方面提供一种基于图与概率的问题代码协助定位装置,所述装置包括:
代码分析单元,用于分析代码,将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;
问题函数分析单元,用于查询问题所在的函数,并将问题函数导入存储图的内存中分析调用关系;
关联函数输出单元,用于根据调用次数的大小按序输出调用问题函数的关联函数。
基于上述装置,进一步的,所述代码分析单元包括:
函数分析模块,用于静态扫描代码,分析各个函数之间的相互调用关系及调用次数;
图结构生成模块,采用深度优先方式生成图结构,并将图结构以二维数组形式保存在计算机内存中;
图属性设置模块,用于将各个函数的调用次数记录在图中对应函数的节点中,并将函数名设置为图的节点属性,函数之间的调用关系及调用次数设置为图的边属性。
进一步的,所述问题函数分析单元包括:
问题函数查询模块:用于当程序运行出现问题时查询问题所在的函数名称;
关联函数查找模块,用于将问题函数的名称导入存储图的内存中,遍历全图查找调用问题函数的关联函数;
关联函数排序模块,用于将关联函数基于调用问题函数的次数进行排序。
此外,本发明还提供一种计算机存储介质,所述计算机存储介质中包含有程序指令,当所述程序指令在计算机设备上运行时,使得计算机设备执行如上所述的基于图与概率的问题代码协助定位方法。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本申请实施例提供的一种基于图与概率的问题代码协助定位方法,通过将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;然后查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系;接下来根据调用次数的大小按序输出调用问题函数的关联函数。本实施例方案使用图及概率的算法,依据概率计算出最可能出现问题的代码函数并对其排序后提供给使用者参考,从而有效协助工程师进行问题分析,减少了通过在函数中添加打印语句的方式进行问题查找,提高了工程师分析处理问题的效率,提升了代码的质量。
本申请实施例提供的一种基于图与概率的问题代码协助定位装置和存储介质,能够实现上述的基于图与概率的问题代码协助定位方法,并取得上文所述的技术效果。
附图说明
此处的附图被并入说明书中并构成说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种基于图与概率的问题代码协助定位方法流程示意图;
图2为图1中步骤S1的实现过程流程示意图;
图3为图1中步骤S2的实现过程流程示意图;
图4为以实施例中三个具体函数为例生成的图结构示意图;
图5为本申请实施例提供的一种基于图与概率的问题代码协助定位装置结构示意图。
具体实施方式
为使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1示出了本发明实施例一种基于图与概率的问题代码协助定位方法流程示意图。
参照图1,本实施例的方法,包括以下步骤:
S1、将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;
具体的,本步骤中,所述将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中,包括下述步骤:
S11、静态扫描代码,分析各个函数之间的相互调用关系及调用次数;
S12、采用深度优先方式生成图结构,并以二维数组形式保存在计算机内存中;
S13、将各个函数的调用次数记录在图中对应函数的节点中,并将函数名设置为图的节点属性,函数之间的调用关系及调用次数设置为图的边属性。
S2、查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系;
具体的,本步骤中,所述查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系,包括下述步骤:
S21、当程序运行出现问题时,查询问题所在的函数名称;
S22、将问题函数的名称导入存储图的内存中,遍历全图查找调用问题函数的关联函数;
S23、将关联函数基于调用问题函数的次数进行排序。
S3、根据调用次数的大小按序输出调用问题函数的关联函数;
在根据调用次数的大小按序输出调用问题函数的关联函数之后,依据问题函数与关联函数之间的关系,协助工程师快速进行问题代码定位,减少工程师复现问题花费的大量时间和精力,提高分析处理问题的效率。
下面,以三个具体函数为例,对上述实施例方法的应用过程进行更为详尽的描述。
假设有三个函数A、B和C,其中,A为递归函数,B,C为普通函数:
静态扫描代码,分析各个函数之间的相互调用关系及调用次数,采用深度优先方式生成图结构,如图4所示;
计算机内部基于二维数组保存上述图结构,如下表一所示:
表一图4对应的二维数组
A | B | C | |
main | 1 | 2 | 1 |
A | n | 0 | 0 |
B | 0 | 0 | 0 |
C | 0 | 1 | 0 |
1)若函数A出现问题,则分析A被调用n+1次,调用次数从大到小排序为A,main,按排序顺序将其输出;
2)若函数B出现问题,则分析B被调用3次,调用次数从大到小排序为main,C,按排序顺序将其输出。
图5示出了本发明实施例一种基于图与概率的问题代码协助定位装置结构示意图。
参照图5,本实施例的装置包括:
代码分析单元1,用于分析代码,将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;
问题函数分析单元2,用于查询问题所在的函数,并将问题函数导入存储图的内存中分析调用关系;
关联函数输出单元3,用于根据调用次数的大小按序输出调用问题函数的关联函数。
进一步的,如图中所示,所述代码分析单元1配置为包括:
函数分析模块,用于静态扫描代码,分析各个函数之间的相互调用关系及调用次数;
图结构生成模块,采用深度优先方式生成图结构,并将图结构以二维数组形式保存在计算机内存中;
图属性设置模块,用于将各个函数的调用次数记录在图中对应函数的节点中,并将函数名设置为图的节点属性,函数之间的调用关系及调用次数设置为图的边属性。
进一步的,所述问题函数分析单元2配置为包括:
问题函数查询模块:用于当程序运行出现问题时查询问题所在的函数名称;
关联函数查找模块,用于将问题函数的名称导入存储图的内存中,遍历全图查找调用问题函数的关联函数;
关联函数排序模块,用于将关联函数基于调用问题函数的次数进行排序。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质中包含有程序指令,当所述程序指令在计算机设备上运行时,使得计算机设备执行上述实施例中的基于图与概率的问题代码协助定位方法。
本申请实施例提供的一种基于图与概率的问题代码协助定位装置和存储介质中未详述的内容,可参照上述实施例中提供的基于图与概率的问题代码协助定位方法,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限定本发明,对于本技术领域的技术人员来说,在不脱离本发明原理的前提下所作的任何修改、改进和等同替换等,均包含在本发明的保护范围内。
Claims (8)
1.基于图与概率的问题代码协助定位方法,其特征在于,包括以下步骤:
将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;
查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系;
根据调用次数的大小按序输出调用问题函数的关联函数。
2.根据权利要求1所述的基于图与概率的问题代码协助定位方法,其特征在于,所述将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中,包括下述步骤:
静态扫描代码,分析各个函数之间的相互调用关系及调用次数;
采用深度优先方式生成图结构,并以二维数组形式保存在计算机内存中;
将各个函数的调用次数记录在图中对应函数的节点中,并将函数名设置为图的节点属性,函数之间的调用关系及调用次数设置为图的边属性。
3.根据权利要求1所述的基于图与概率的问题代码协助定位方法,其特征在于,所述查询问题所在的函数,将问题函数导入存储图的内存中分析调用关系,包括下述步骤:
当程序运行出现问题时,查询问题所在的函数名称;
将问题函数的名称导入存储图的内存中,遍历全图查找调用问题函数的关联函数;
将关联函数基于调用问题函数的次数进行排序。
4.根据权利要求1所述的基于图与概率的问题代码协助定位方法,其特征在于,所述根据调用次数的大小按序输出调用问题函数的关联函数后,依据问题函数与关联函数之间的关系,进行问题代码的协助定位。
5.基于图与概率的问题代码协助定位装置,其特征在于,包括:
代码分析单元,用于分析代码,将代码的函数调用关系以图的形式存储在计算机内存中,并将各函数的调用次数信息存储在图的数据结构中;
问题函数分析单元,用于查询问题所在的函数,并将问题函数导入存储图的内存中分析调用关系;
关联函数输出单元,用于根据调用次数的大小按序输出调用问题函数的关联函数。
6.根据权利要求5所述的基于图与概率的问题代码协助定位装置,其特征在于,所述代码分析单元包括:
函数分析模块,用于静态扫描代码,分析各个函数之间的相互调用关系及调用次数;
图结构生成模块,采用深度优先方式生成图结构,并将图结构以二维数组形式保存在计算机内存中;
图属性设置模块,用于将各个函数的调用次数记录在图中对应函数的节点中,并将函数名设置为图的节点属性,函数之间的调用关系及调用次数设置为图的边属性。
7.根据权利要求5所述的基于图与概率的问题代码协助定位装置,其特征在于,所述问题函数分析单元包括:
问题函数查询模块:用于当程序运行出现问题时查询问题所在的函数名称;
关联函数查找模块,用于将问题函数的名称导入存储图的内存中,遍历全图查找调用问题函数的关联函数;
关联函数排序模块,用于将关联函数基于调用问题函数的次数进行排序。
8.一种计算机存储介质,其特征在于,所述计算机存储介质中包含有程序指令,当所述程序指令在计算机设备上运行时,使得计算机设备执行如权利要求1至4任一项所述的基于图与概率的问题代码协助定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011084186.5A CN112131132A (zh) | 2020-10-12 | 2020-10-12 | 基于图与概率的问题代码协助定位方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011084186.5A CN112131132A (zh) | 2020-10-12 | 2020-10-12 | 基于图与概率的问题代码协助定位方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112131132A true CN112131132A (zh) | 2020-12-25 |
Family
ID=73852581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011084186.5A Withdrawn CN112131132A (zh) | 2020-10-12 | 2020-10-12 | 基于图与概率的问题代码协助定位方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131132A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750223A (zh) * | 2012-06-06 | 2012-10-24 | 东南大学 | 一种基于面向对象程序切片谱的错误定位方法 |
CN103198016A (zh) * | 2013-03-26 | 2013-07-10 | 哈尔滨工业大学 | 基于联合依赖概率建模的软件错误定位方法 |
CN104636256A (zh) * | 2015-02-17 | 2015-05-20 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
CN110909015A (zh) * | 2019-09-12 | 2020-03-24 | 华为技术有限公司 | 微服务的拆分方法、装置、设备及存储介质 |
-
2020
- 2020-10-12 CN CN202011084186.5A patent/CN112131132A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750223A (zh) * | 2012-06-06 | 2012-10-24 | 东南大学 | 一种基于面向对象程序切片谱的错误定位方法 |
CN103198016A (zh) * | 2013-03-26 | 2013-07-10 | 哈尔滨工业大学 | 基于联合依赖概率建模的软件错误定位方法 |
CN104636256A (zh) * | 2015-02-17 | 2015-05-20 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
CN110909015A (zh) * | 2019-09-12 | 2020-03-24 | 华为技术有限公司 | 微服务的拆分方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8751216B2 (en) | Table merging with row data reduction | |
US10394694B2 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
CN110019384B (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN106469049B (zh) | 一种文件扫描的方法及装置 | |
CN113064885B (zh) | 一种数据清洗方法和装置 | |
CN112818181B (zh) | 图数据库检索方法、系统、计算机设备和存储介质 | |
CN110263104B (zh) | Json字符串处理方法及装置 | |
CN111626028A (zh) | 基于函数解析的报表生成方法、装置、设备及计算机介质 | |
CN111897828A (zh) | 数据批处理实现方法、装置、设备及存储介质 | |
CN111258905A (zh) | 缺陷定位方法、装置和电子设备及计算机可读存储介质 | |
CN109543027B (zh) | 分页数据的获取方法及装置、设备及存储介质 | |
US20170103107A1 (en) | Method, apparatus, and computer-readable medium to extract a referentially intact subset from a database | |
CN114398315A (zh) | 一种数据存储方法、系统、存储介质及电子设备 | |
CN112131132A (zh) | 基于图与概率的问题代码协助定位方法、装置和存储介质 | |
CN115577147A (zh) | 可视化情报图谱检索方法、装置、电子设备及存储介质 | |
CN114661298A (zh) | 公共方法自动生成方法、系统、设备及介质 | |
CN114625889A (zh) | 一种语义消歧方法、装置、电子设备及存储介质 | |
CN112948419A (zh) | 查询语句处理方法及装置 | |
CN112925874A (zh) | 基于案例标记的相似代码搜索方法及系统 | |
CN117290355B (zh) | 一种元数据地图构建系统 | |
CN115242612B (zh) | 一种故障诊断方法和装置 | |
CN112612471B (zh) | 代码处理方法、装置、设备及存储介质 | |
CN110221971B (zh) | 搜索引擎的测试方法及装置、电子设备、存储介质 | |
CN116107889A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201225 |
|
WW01 | Invention patent application withdrawn after publication |