CN111459547B - 一种函数调用链路的展示方法和装置 - Google Patents
一种函数调用链路的展示方法和装置 Download PDFInfo
- Publication number
- CN111459547B CN111459547B CN202010251530.9A CN202010251530A CN111459547B CN 111459547 B CN111459547 B CN 111459547B CN 202010251530 A CN202010251530 A CN 202010251530A CN 111459547 B CN111459547 B CN 111459547B
- Authority
- CN
- China
- Prior art keywords
- function
- data processing
- target
- call
- hierarchy
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种函数调用链路的展示方法和装置;本申请实施例可以对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种函数调用链路的展示方法和装置。
背景技术
随着信息技术的高速发展,在业务高性能高可用的要求下,业务程序会引入各种并发处理或异步处理方式来解决问题,例如在区块链业务中,会在接受请求或验证交易信息等处理中引入多进程或多线程的并发机制,在共识提交等处理中引入不阻塞式异步广播及投票等待响应的并发机制,在数据上链等处理中引入不阻塞式异步提交及事件通知响应的并发机制等,针对不同部分的数据处理,采取了不同类型的并发机制。为了能够直观地了解数据处理过程中所出现的问题,将数据处理过程中函数之间的调用情况采用链路的方式进行展示,便显得十分必要。
现有的函数调用链路的展示方法,仅能展示数据单独处理部分的函数调用链路,从而使得对函数调用链路进行展示的准确度降低。
发明内容
本申请实施例提供一种函数调用链路的展示方法和装置,可以提高函数调用链路展示的准确度。
本申请实施例提供一种函数调用链路的展示方法,包括:
对数据处理函数进行关键点注入,得到注入后数据处理函数;
当执行至所述注入后数据处理函数中目标关键点对应的目标函数时,记录所述目标函数的函数调用路径,所述函数调用路径为从所述注入后数据处理函数中入口函数到目标函数的函数调用路径;
当执行完所述注入后数据处理函数时,基于记录的函数调用路径构建所述数据处理函数对应的函数调用链路,其中,所述函数调用链路包括至少一个函数层级,所述函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;
展示所述函数调用链路;
当检测到针对目标函数层级中目标函数的操作时,对所述目标函数所调用的关联函数层级进行展示或隐藏。
相应的,本申请实施例还提供了一种函数调用链路的展示装置,包括:
注入单元,用于对数据处理函数进行关键点注入,得到注入后数据处理函数;
记录单元,用于当执行至所述注入后数据处理函数中目标关键点对应的目标函数时,记录所述目标函数的函数调用路径,所述函数调用路径为从所述注入后数据处理函数中入口函数到目标函数的函数调用路径;
构建单元,用于当执行完所述注入后数据处理函数时,基于记录的函数调用路径构建所述数据处理函数对应的函数调用链路,其中,所述函数调用链路包括至少一个函数层级,所述函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;
链路展示单元,用于展示所述函数调用链路;
层级展示单元,用于当检测到针对目标函数层级中目标函数的操作时,对所述目标函数所调用的关联函数层级进行展示或隐藏。
在一些实施例中,所述注入单元,包括:
获取子单元,用于采用反射机制获取数据处理函数中各个函数的函数调用特征;
注入子单元,用于根据所述函数调用特征对所述数据处理函数进行关键点注入,得到注入后数据处理函数。
在一些实施例中,所述注入子单元,用于:
根据所述函数调用特征,确定所述数据处理函数中需要注入关键点的关键函数;
在所述关键函数的预设位置注入关键点,得到注入后数据处理函数。
在一些实施例中,所述注入子单元,用于:
在所述关键函数的预设位置注入关键点,以及在关键点上注入钩子函数;
将调用路径记录函数链接至所述钩子函数上,得到注入后数据处理函数。
在一些实施例中,所述构建单元,用于:
当执行完所述注入后数据处理函数时,对记录的函数调用路径中属于相同层级的函数进行封装,得到封装后的函数事件层级,其中,所述函数事件层级包括函数事件对象集合、以及函数事件对象之间的调用链路,所述函数事件对象集合包括相同层级下函数对应的函数事件对象,所述函数事件层级对应函数层级;
根据记录的函数调用路径,将所述函数事件层级封装成函数事件流,得到所述数据处理函数对应的函数调用链路。
在一些实施例中,所述层级展示单元,用于:
当检测到针对目标函数层级中目标函数的第一操作,且所述目标函数所调用的关联函数层级处于未展示状态时,展示所述关联函数层级;
当检测到针对目标函数层级中目标函数的第二操作,且所述目标函数所调用的关联函数层级处于展示状态时,隐藏所述关联函数层级。
在一些实施例中,所述链路展示单元,用于:
将所述函数调用链路上传至预设数据可视化库中;
通过所述预设数据可视化库展示所述函数调用链路。
在一些实施例中,所述函数调用链路还包括函数对应的可视化函数标识,所述函数调用链路的展示装置还包括标识展示单元,用于:
当检测到针对所述函数调用链路中目标函数的标识显示操作时,展示所述目标函数的目标可视化函数标识对应的目标原始函数标识。
在一些实施例中,所述标识展示单元,用于:
获取预设映射关系集合,所述预设映射关系集合包括函数的可视化函数标识与原始函数标识之间的映射关系;
通过所述目标函数的目标可视化函数标识、以及所述预设映射关系集合,确定所述目标可视化函数标识对应的目标原始函数标识;
展示所述目标函数的目标可视化函数标识对应的目标原始函数标识。
相应的,本申请还提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本申请实施例提供的任一种函数调用链路的展示方法中的步骤。
此外,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本申请实施例提供的任一种函数调用链路的展示方法中的步骤。
本申请实施例可以对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。由于该方案能够根据数据处理函数中各个函数的函数调用特征,对该数据处理函数进行关键点注入,以便于在执行注入关键点后的数据处理函数的过程中,跟踪记录其中各个函数的函数调用路径,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,并展示该函数调用链路,当检测到针对该函数调用链路上目标函数层级中目标函数的操作时,可以展示或隐藏该目标函数所调用的关联函数层级,从而使得对函数调用链路进行展示的准确度大大提升。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的函数调用链路的展示方法的场景示意图;
图1b是本申请实施例提供的函数调用链路的展示方法的流程示意图;
图1c是本申请实施例提供的注入关键点的示意图;
图1d是本申请实施例提供的函数名之间的映射关系示意图;
图2a是本申请实施例提供的函数调用链路的展示方法的另一流程示意图;
图2b是本申请实施例提供的函数调用链路的展示效果示意图;
图2c是本申请实施例提供的函数调用链路的另一展示效果示意图;
图3a是本申请实施例提供的函数调用链路的展示装置的结构示意图;
图3b是本申请实施例提供的函数调用链路的展示装置的另一结构示意图;
图3c是本申请实施例提供的函数调用链路的展示装置的另一结构示意图;
图4是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供一种函数调用链路的展示方法、装置、计算机设备和计算机可读存储介质。具体地,本申请实施例的函数调用链路的展示方法可以由计算机设备执行,其中,计算机设备可以为终端或者服务器等设备,该终端可以为手机、平板电脑、笔记本电脑、智能电视、穿戴式智能设备、个人计算机(PC,Personal Computer)等设备;该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群。
例如,参见图1a,以该函数调用链路的展示装置集成在计算机设备中为例,该计算机设备可以对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
在本实施例中,将从函数调用链路的展示装置的角度进行描述,该函数调用链路的展示装置具体可以集成在计算机设备中,例如,函数调用链路的展示装置可以是设置于计算机设备中的实体装置,或者函数调用链路的展示装置可以以客户端的形式集成在计算机设备中。该计算机设备可以是服务器,也可以是终端等设备。
如图1b所示,该函数调用链路的展示方法的具体流程可以如下:
101、对数据处理函数进行关键点注入,得到注入后数据处理函数。
其中,数据处理函数包括业务程序中需要参与数据处理的一个或者多个功能函数,该功能函数可以实现业务中的某项功能,例如,在区块链业务中,完成一项完整的区块链服务如完成一项交易,就需要实现请求、打包、验证、提交、以及存储等各个步骤对应的功能,而实现每个功能就需要执行相应的功能函数,例如,请求函数、打包函数、验证函数、提交函数、存储函数,等等。其中,每种功能函数中又包括一个或者多个用于实现该功能的函数。
为了能够实时地对数据处理函数中的各个函数进行跟踪和记录,以便于直观地了解数据处理函数中各个函数的执行情况,提升对数据处理函数进行展示的准确度,可以基于数据处理函数中各个函数的函数调用特征对数据处理函数进行关键点注入,从而得到注入后数据处理函数,参见图1c。
其中,函数调用特征可以表征数据处理函数中各个函数之间的函数调用关系,该函数调用特征可以通过反射机制获取得到,具体地,步骤“对数据处理函数进行关键点注入,得到注入后数据处理函数”,可以包括:
采用反射机制获取数据处理函数中各个函数的函数调用特征;
根据函数调用特征对数据处理函数进行关键点注入,得到注入后数据处理函数。
其中,在计算机科学领域,反射是指一类应用,它们能够自描述和自控制,即,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
通过采用反射机制可以获取数据处理函数中各个函数的特征信息,例如,可以获取数据处理函数中各个函数的函数调用特征,该函数调用特征包括数据处理函数中入口函数(即功能函数的入口)对应的数据处理标识、以及入口函数与入口函数中所调用的各个函数之间的调用关系等。其中,数据处理标识可以是标识入口函数所处理数据的唯一标识符,例如,基于区块链进行交易处理时,该数据处理标识可以是交易的哈希值(hash),或者是区块哈希值,也可以是区块高度等。
其中,数据处理函数中的各个函数可以由开发人员或者测试人员预先进行定义和编写。
其中,根据函数调用特征对数据处理函数进行关键点注入,可以是基于各个函数的函数调用特征确定出需要注入关键点的函数,例如,可以是存在调用和被调用关系的函数,然后,在需要注入关键点的函数的预设位置注入关键点,从而得到注入后数据处理函数。具体地,步骤“根据函数调用特征对数据处理函数进行关键点注入,得到注入后数据处理函数”,可以包括:
根据函数调用特征,确定数据处理函数中需要注入关键点的关键函数;
在关键函数的预设位置注入关键点,得到注入后数据处理函数。
例如,可以根据数据处理函数中各个函数之间的调用关系,在数据处理函数中的各个入口函数、以及入口函数调用的各个函数的预设位置进行关键点的注入。
其中,预设位置可以由开发人员或者测试人员根据实际应用的需求进行设置,例如,可以是某一函数中代码的起始位置、或者是中间位置、也可以是结束位置。
在一实施例中,具体地,为了对数据处理函数中的各个函数进行跟踪和记录,可以在关键函数中注入调用路径记录函数,通过该调用路径记录函数跟踪和记录各个关键函数的函数调用路径(如该关键函数是否被调用和执行过、以及是被哪个函数调用和执行的等信息)。
其中,注入调用路径记录函数的方式可以有多种,例如,可以将调用路径记录函数链接至钩子函数(Hook Function)上,再将该钩子函数注入到关键函数的关键点上。具体地,步骤“在关键函数的预设位置注入关键点,得到注入后数据处理函数”,可以包括:
在关键函数的预设位置注入关键点,以及在关键点上注入钩子函数;
将调用路径记录函数链接至所述钩子函数上,得到注入后数据处理函数。
其中,钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息,钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。
本申请实施例中,可以通过钩子函数将调用路径记录函数注入到数据处理函数中各个关键函数的关键点上,以便于在函数执行过程中跟踪和记录各个关键函数的调用路径。
102、当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径。
其中,函数调用路径包括从注入后数据处理函数的入口函数到目标函数中各个函数所属的层级信息(如层级的标识)、以及各个函数的函数标识信息(如函数名)等。例如,入口函数F中调用了函数F1和函数F2,其中,函数F1又调用了函数F3和函数F4,函数F2调用了函数F5和F6,则F就是根层级函数,即为0层,F1和F2则为1.1层,F3和F4为2.1层,F5和F6为2.2层。
当执行至注入后数据处理函数中目标关键点对应的目标函数时,可以将从注入后数据处理函数的入口函数到目标函数中各个函数的层级信息和函数标识信息等记录到日志中。
例如,当执行至某一关键点对应的目标函数时,可以优先执行与该目标函数相链接的调用路径记录函数,通过调用和执行该调用路径记录函数,来记录该目标函数的函数标识信息、所属的层级信息,等等。
其中,对于数据处理函数中的入口函数,可以将其理解为是功能函数的根层级函数,因此,在记录函数调用路径时,也会对数据处理函数中的入口函数(即功能函数的入口)对应的数据处理标识进行记录。
103、当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路。
由于数据处理函数中包含一个或者多个功能函数以实现该功能函数所表征的功能,而每个功能函数中又会调用一个或者多个函数,因此,在数据处理过程中,为了能够更加直观且全面地了解不同部分数据的处理情况,可以在执行完注入后数据处理函数时,根据记录的函数调用路径,将处理不同部分数据的函数关联起来,构建数据处理函数对应的函数调用链路,以便于后续将其进行展示以辅助分析数据处理过程中出现的问题。
其中,构建数据处理函数的函数调用链路,可以先对记录的函数调用路径中的各个函数进行封装,例如,可以将属于相同层级的函数进行封装,得到封装后的函数事件层级,该函数事件层级对应函数层级,再将函数事件层级封装成函数事件流,从而得到数据处理函数对应的函数调用链路。具体地,步骤“当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路”,可以包括:
当执行完注入后数据处理函数时,对记录的函数调用路径中属于相同层级的函数进行封装,得到封装后的函数事件层级,其中,该函数事件层级包括函数事件对象集合、以及函数事件对象之间的调用链路,该函数事件对象集合包括相同层级下函数对应的函数事件对象,该函数事件层级对应函数层级;
根据记录的函数调用路径,将函数事件层级封装成函数事件流,得到数据处理函数对应的函数调用链路。
其中,属于相同层级的函数可以理解为是被同一个函数所调用的函数,例如,入口函数A中调用了函数A1和函数A2,函数A1中又调用了函数B1和函数B2,那么函数A就是函数A1、A2、B1、B2的根层级函数,其中,函数A1和函数A2则为相同层级的函数,函数B1和函数B2为相同层级的函数。
其中,函数事件流中包括函数事件层级、以及函数事件层级之间的调用链路,具体地,可以是目标函数事件层级中的目标函数事件对象和与其关联的函数事件层级之间的调用链路,该调用链路包含了目标函数事件对象和与其关联的函数事件层级中函数事件对象之间的调用关系。根据记录的函数调用链路,将函数事件层级进行封装得到的函数事件流,即可得到数据处理函数对应的函数调用链路。其中,函数事件层级还可以包括层级号,以表示其所属的层级,函数事件流中还可以包括根层级函数的层级标识、测试环境、测试工具的版本号、自动化测试用例编号等。
在一实施例中,为了便于后续使用和展示,可以将封装后得到的函数事件层级、函数事件流、以及函数事件对象分别存储至数据库中,例如,可以在数据库中建立不同的表分别对函数事件流、函数事件层级、函数事件对象进行存储。
104、展示该函数调用链路。
其中,展示该函数调用链路的方式可以有多种,例如,可以通过数据可视化库展示该函数调用链路,例如,具体可以通过D3(Data-Driven Documents)数据可视化库对该函数调用链路进行展示。具体地,步骤“展示该函数调用链路”,可以包括:
将函数调用链路上传至预设数据可视化库中;
通过该预设数据可视化库展示所述函数调用链路。
其中,D3数据可视化库是一个被数据驱动的文档,主要用来做数据可视化。D3也叫D3.js,是一个JavaScript函数库,提供了各种简单易用的函数,大大简化JS操作数据的难度,尤其在数据可视化方面,D3将生成可视化的复杂步骤精简到了几个简单函数,只需输入几个简单数据,就可转换各种绚丽图形。
在一实施例中,函数的函数标识信息可以用于标识该函数,该函数标识信息包括可视化函数标识、以及原始函数标识,该函数调用链路还包括函数对应的可视化函数标识。在展示函数调用链路时,考虑到各个函数的原始函数标识如函数名在被定义时,会存在函数名定义过长的情况,影响函数调用链路的展示效果。因此,在展示函数调用链路时,会采用预先定义好的、与原始函数标识相对应的可视化函数标识进行展示,当检测到用户针对该函数调用链路中目标函数的标识显示操作时,就展示该目标函数的可视化函数标识对应的目标原始函数标识。具体地,该函数调用链路的展示方法,还可以包括:
当检测到针对函数调用链路中目标函数的标识显示操作时,展示目标函数的目标可视化函数标识对应的目标原始函数标识。
其中,标识显示操作可以是点击、滑动或移动焦点等操作,该标识显示操作可以是由用户在数据可视化库中通过移动焦点至目标函数的预设区域时进行触发,也可以是点击或滑动目标函数对应的控件进行触发,等等。该预设区域可以由开发人员根据实际应用的需求进行设置。
当检测到用户针对函数调用链路中目标函数的标识显示操作时,则在目标函数的目标可视化函数标识旁边展示该目标可视化函数标识对应的目标原始函数标识。其中,可视化函数标识是为了使函数调用链路上的各个函数便于展示和区分,而对原始函数标识采用简化的形式进行表示的标识,例如,当用户在D3数据可视化库中移动焦点到函数的可视化函数名(如“F1”)上,则可以在该可视化函数名旁边以浮层的方式展示该函数的原始函数名(如com.qq.trustsql.Block.block)。
在一实施例中,可视化函数标识与原始函数标识之间存在映射关系,通过该映射关系,可以确定并展示函数的可视化函数标识对应的原始函数标识。具体地,步骤“展示目标函数的目标可视化函数标识对应的目标原始函数标识”,可以包括:
获取预设映射关系集合,该预设映射关系集合包括函数的可视化函数标识与原始函数标识之间的映射关系;
通过目标函数的目标可视化函数标识、以及该预设映射关系集合,确定目标可视化函数标识对应的目标原始函数标识;
展示目标函数的目标可视化函数标识对应的目标原始函数标识。
其中,该映射关系可以参见图1d,其中包括:原始函数名“com.qq.trustsql.ChainApi.insertTrans”与可视化函数名“F1”之间的映射关系;原始函数名“com.qq.trustsql.Block.block”与可视化函数名“F2”之间的映射关系。
在一实施例中,该函数调用链路还可以采用节点和连接线的方式进行展示,即该函数调用链路包括函数节点、以及函数节点之间的连接线,其中,函数节点对应函数、连接线则表示函数节点对应的函数之间的调用链接,函数节点包括函数的可视化函数标识。
105、当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。
在一实施例中,该函数调用链路包括至少一个函数层级,在展示该函数调用链路之后,当检测到针对目标函数层级中目标函数的操作时,可以展开或者隐藏该目标函数所调用的关联函数层级,具体地,步骤“当检测到针对目标函数层级中目标函数的操作时,对目标函数所调用的关联函数层级进行展示或隐藏”,可以包括:
当检测到针对目标函数层级中目标函数的第一操作,且目标函数所调用的关联函数层级处于未展示状态时,展示该关联函数层级;
当检测到针对目标函数层级中目标函数的第二操作,且目标函数所调用的关联函数层级处于展示状态时,隐藏该关联函数事件层级。
其中,第一操作可以是展示关联函数事件层级的操作,第二操作可以是隐藏关联函数层级的操作。例如,仍以上述入口函数A为例进行说明,当检测到用户针对入口函数A中A1函数的展示操作,且A1函数所调用的关联函数层级(即,包含有函数B1和函数B2的层级)处于未展示状态时,则展示该关联函数层级;当检测到用户针对A1函数的隐藏操作,且A1函数所调用的关联函数层级(即,包含有函数B1和函数B2的层级)处于展示状态时,则隐藏该关联函数层级(或者理解为取消该关联函数层级的展示)。
其中,第一操作和第二操作可以是点击、滑动等操作。
由上可知,本申请实施例可以对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。由于该方案能够根据数据处理函数中各个函数的函数调用特征,对该数据处理函数进行关键点注入(例如,通过钩子函数注入调用路径记录函数),以便于在执行注入关键点后的数据处理函数的过程中,跟踪记录其中各个函数的函数调用路径,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,并展示该函数调用链路,当检测到针对该函数调用链路上目标函数层级中目标函数的操作时,可以展示或隐藏该目标函数所调用的关联函数层级,从而使得对函数调用链路进行展示的准确度大大提升。由于该函数调用链路可以直观、全面地反映出数据处理函数中各个函数的调用情况,因此,也更有利于辅助分析在数据处理过程中出现的问题。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该函数调用链路的展示装置具体集成在计算机设备中为例进行说明。
如图2a所示,该函数调用链路的展示方法,具体流程可以如下:
201、计算机设备对数据处理函数进行关键点注入,得到注入后数据处理函数。
例如,计算机设备可以采用反射机制获取数据处理函数中各个函数的函数调用特征,包括:数据处理函数中入口函数对应的数据处理标识、以及入口函数与入口函数中调用的各个函数的调用关系等。
计算机设备可以根据数据处理函数中各个函数之间的调用关系,在数据处理函数中的入口函数、以及入口函数调用的各个函数的预设位置进行关键点的注入,该预设位置可以是函数的起始位置、或者是中间位置、也可以是结束位置。在注入关键点之后,可以通过钩子函数将调用路径记录函数链接至关键点上,以便于通过该调用路径记录函数跟踪和记录数据处理函数中各个函数的函数调用路径。
202、计算机设备当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径。
计算机设备当执行至注入后数据处理函数中目标关键点对应的目标函数时,可以将从注入后数据处理函数的入口函数到目标函数中各个函数的层级信息和函数标识信息等记录到日志中。
例如,当执行至某一关键点对应的目标函数时,可以优先执行与该目标函数相链接的调用路径记录函数,通过调用和执行该调用路径记录函数,来记录该目标函数的函数标识信息、所属的层级信息,等等。
其中,对于数据处理函数中的入口函数,可以将其理解为是功能函数的根层级函数,因此,在记录函数调用路径时,也会对数据处理函数中的入口函数(即功能函数的入口)对应的数据处理标识进行记录。
203、计算机设备当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路。
例如,计算机设备可以先对记录的函数调用路径中的各个函数进行封装,例如,可以将属于相同层级的函数进行封装,得到封装后的函数事件层级,该函数事件层级中包括函数事件对象集合、以及函数事件对象之间的调用链路,其中,函数事件对象集合包括相同层级下函数对应的函数事件对象,该函数事件层级对应函数层级。将封装后得到的函数事件层级封装成函数事件流,从而得到数据处理函数对应的函数调用链路。其中,函数事件层级还可以包括层级号,以表示其所属的层级。
参见图2b,F1为某一功能函数的入口函数,F2到F17为入口函数中调用的各个函数,其中,由于F1调用了F2和F16,则F2和F16属于相同层级下的函数,可以将F2和F16封装为一个函数事件层级,而F2中又调用了函数F3、F12、F13、F14以及F15,则F3、F12、F13、F14以及F15可以封装为一个函数事件层级,等等。以4.2层的函数事件层级为例,当前的层级号为2,函数事件对象集合为[F6,F7,F8,F9,F10],函数事件对象之间的调用链路为[F6→F7,F7→F8,F7→F9,F9→F7,F9→F10]。
204、计算机设备展示该函数调用链路。
例如,计算机设备可以将该函数调用链路上传至D3数据可视化库中,通过该数据可视化库展示该函数调用链路。
该函数调用链路还包括函数对应的可视化函数标识。当检测到用户针对该函数调用链路中目标函数的标识显示操作时,就展示该目标函数的可视化函数标识对应的目标原始函数标识。
例如,参见图2c,当检测到用户针对函数调用链路中函数2的标识显示操作如点击、滑动或移动焦点操作时,则在函数2的可视化函数名“2”旁以浮层的方式展示函数2的原始函数名“F2”。
如图2c所示,该函数调用链路还可以采用节点和连接线的方式进行展示,即该函数调用链路包括函数节点、以及函数节点之间的连接线,其中,函数节点对应函数、连接线则表示函数节点对应的函数之间的调用链接,函数节点包括函数的可视化函数标识。
205、计算机设备当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。
在展示该函数调用链路时,当检测到用户针对不同层级中的函数进行的点击、滑动等操作,计算机设备可以展示、或隐藏该函数所调用的关联函数层级,即,在展示该函数调用链路时,可以支持用户反复点击某一函数,以此展示或者隐藏该函数所调用的各个函数,以及各个函数之间的调用链路。
参见图2b,每个函数都有其所调用的关联函数层级,以展示在该函数中所调用的函数,比如,函数F1所调用的关联函数层级为1.1层,即1.1层中的函数F2和F16,就是函数F1中调用的函数。对于没有关联函数层级的函数如F5、F17,则是基础标准函数,没有可展示的关联函数层级。
其中,每个函数层级中的函数之间还包含有调用链路,该调用链路是按照函数被调用的先后顺序进行链接的,比如,在4.2层中,当函数F11被调用后,首先被执行的是函数F6,接着是函数F7被调用,之后就是函数F8被调用,之后又是函数F7被调用,接着是函数F9被调用,而后函数F7又被再次调用,之后,函数F9也被再次调用,最后是函数F10被调用。
由上可知,本申请实施例可以对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。由于该方案能够根据数据处理函数中各个函数的函数调用特征,对该数据处理函数进行关键点注入(例如,通过钩子函数注入调用路径记录函数),以便于在执行注入关键点后的数据处理函数的过程中,跟踪记录其中各个函数的函数调用路径,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,并展示该函数调用链路,当检测到针对该函数调用链路上目标函数层级中目标函数的操作时,可以展示或隐藏该目标函数所调用的关联函数层级,从而使得对函数调用链路进行展示的准确度大大提升。由于该函数调用链路可以直观、全面地反映出数据处理函数中各个函数的调用情况,因此,也更有利于辅助分析在数据处理过程中出现的问题。
为便于更好地实施以上方法,本申请实施例还提供了一种函数调用链路的展示装置。
例如,如图3a所示,该函数调用链路的展示装置可以包括注入单元301、记录单元302、构建单元303、链路展示单元304、以及层级展示单元305等,如下:
注入单元301,用于对数据处理函数进行关键点注入,得到注入后数据处理函数;
记录单元302,用于当执行至所述注入后数据处理函数中目标关键点对应的目标函数时,记录所述目标函数的函数调用路径,所述函数调用路径为从所述注入后数据处理函数中入口函数到目标函数的函数调用路径;
构建单元303,用于当执行完所述注入后数据处理函数时,基于记录的函数调用路径构建所述数据处理函数对应的函数调用链路,其中,所述函数调用链路包括至少一个函数层级,所述函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;
链路展示单元304,用于展示所述函数调用链路;
层级展示单元305,用于当检测到针对目标函数层级中目标函数的操作时,对所述目标函数所调用的关联函数层级进行展示或隐藏。
在一些实施例中,参见图3b,所述注入单元301,包括:
获取子单元3011,用于采用反射机制获取数据处理函数中各个函数的函数调用特征;
注入子单元3012,用于根据所述函数调用特征对所述数据处理函数进行关键点注入,得到注入后数据处理函数。
在一些实施例中,所述注入子单元3012,用于:
根据所述函数调用特征,确定所述数据处理函数中需要注入关键点的关键函数;
在所述关键函数的预设位置注入关键点,得到注入后数据处理函数。
在一些实施例中,所述注入子单元3012,用于:
在所述关键函数的预设位置注入关键点,以及在关键点上注入钩子函数;
将调用路径记录函数链接至所述钩子函数上,得到注入后数据处理函数。
在一些实施例中,所述构建单元303,用于:
当执行完所述注入后数据处理函数时,对记录的函数调用路径中属于相同层级的函数进行封装,得到封装后的函数事件层级,其中,所述函数事件层级包括函数事件对象集合、以及函数事件对象之间的调用链路,所述函数事件对象集合包括相同层级下函数对应的函数事件对象,所述函数事件层级对应函数层级;
根据记录的函数调用路径,将所述函数事件层级封装成函数事件流,得到所述数据处理函数对应的函数调用链路。
在一些实施例中,所述层级展示单元305,用于:
当检测到针对目标函数层级中目标函数的第一操作,且所述目标函数所调用的关联函数层级处于未展示状态时,展示所述关联函数层级;
当检测到针对目标函数层级中目标函数的第二操作,且所述目标函数所调用的关联函数层级处于展示状态时,隐藏所述关联函数层级。
在一些实施例中,所述链路展示单元304,用于:
将所述函数调用链路上传至预设数据可视化库中;
通过所述预设数据可视化库展示所述函数调用链路。
在一些实施例中,参见图3c,所述函数调用链路还包括函数对应的可视化函数标识,所述函数调用链路的展示装置还包括标识展示单元306,用于:
当检测到针对所述函数调用链路中目标函数的标识显示操作时,展示所述目标函数的目标可视化函数标识对应的目标原始函数标识。
在一些实施例中,所述标识展示单元306,用于:
获取预设映射关系集合,所述预设映射关系集合包括函数的可视化函数标识与原始函数标识之间的映射关系;
通过所述目标函数的目标可视化函数标识、以及所述预设映射关系集合,确定所述目标可视化函数标识对应的目标原始函数标识;
展示所述目标函数的目标可视化函数标识对应的目标原始函数标识。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本申请实施例的函数调用链路的展示装置可以通过注入单元301对数据处理函数进行关键点注入,得到注入后数据处理函数;由记录单元302当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;由构建单元303当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;由链路展示单元304展示该函数调用链路;由层级展示单元305当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。由于该方案能够根据数据处理函数中各个函数的函数调用特征,对该数据处理函数进行关键点注入,以便于在执行注入关键点后的数据处理函数的过程中,跟踪记录其中各个函数的函数调用路径,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,并展示该函数调用链路,当检测到针对该函数调用链路上目标函数层级中目标函数的操作时,可以展示或隐藏该目标函数所调用的关联函数层级,从而使得对函数调用链路进行展示的准确度大大提升。
本申请实施例还提供一种计算机设备,如图4所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、影像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。
以上各个操作具体可参见前面的实施例,在此不作赘述。
由上可知,本申请实施例的计算机设备可以对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。由于该方案能够根据数据处理函数中各个函数的函数调用特征,对该数据处理函数进行关键点注入,以便于在执行注入关键点后的数据处理函数的过程中,跟踪记录其中各个函数的函数调用路径,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,并展示该函数调用链路,当检测到针对该函数调用链路上目标函数层级中目标函数的操作时,可以展示或隐藏该目标函数所调用的关联函数层级,从而使得对函数调用链路进行展示的准确度大大提升。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种函数调用链路的展示方法中的步骤。例如,该计算机程序可以执行如下步骤:
对数据处理函数进行关键点注入,得到注入后数据处理函数;当执行至注入后数据处理函数中目标关键点对应的目标函数时,记录目标函数的函数调用路径,该函数调用路径为从注入后数据处理函数中入口函数到目标函数的函数调用路径;当执行完注入后数据处理函数时,基于记录的函数调用路径构建数据处理函数对应的函数调用链路,其中,该函数调用链路包括至少一个函数层级,该函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;展示该函数调用链路;当检测到针对目标函数层级中目标函数的操作时,对该目标函数所调用的关联函数层级进行展示或隐藏。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种函数调用链路的展示方法中的步骤,因此,可以实现本申请实施例所提供的任一种函数调用链路的展示方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种函数调用链路的展示方法、装置、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种函数调用链路的展示方法,其特征在于,包括:
对数据处理函数进行关键点注入,得到注入后数据处理函数;
当执行至所述注入后数据处理函数中目标关键点对应的目标函数时,记录所述目标函数的函数调用路径,所述函数调用路径为从所述注入后数据处理函数中入口函数到目标函数的函数调用路径;
当执行完所述注入后数据处理函数时,基于记录的函数调用路径构建所述注入后数据处理函数对应的函数调用链路,其中,所述函数调用链路包括至少一个函数层级,所述函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;
展示所述函数调用链路;
当检测到针对目标函数层级中目标函数的操作时,对所述目标函数所调用的关联函数层级进行展示或隐藏。
2.根据权利要求1所述的方法,其特征在于,所述对数据处理函数进行关键点注入,得到注入后数据处理函数,包括:
采用反射机制获取数据处理函数中各个函数的函数调用特征;
根据所述函数调用特征对所述数据处理函数进行关键点注入,得到注入后数据处理函数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述函数调用特征对所述数据处理函数进行关键点注入,得到注入后数据处理函数,包括:
根据所述函数调用特征,确定所述数据处理函数中需要注入关键点的关键函数;
在所述关键函数的预设位置注入关键点,得到注入后数据处理函数。
4.根据权利要求3所述的方法,其特征在于,所述在所述关键函数的预设位置注入关键点,得到注入后数据处理函数,包括:
在所述关键函数的预设位置注入关键点,以及在关键点上注入钩子函数;
将调用路径记录函数链接至所述钩子函数上,得到注入后数据处理函数。
5.根据权利要求1所述的方法,其特征在于,所述当执行完所述注入后数据处理函数时,基于记录的函数调用路径构建所述注入后数据处理函数对应的函数调用链路,包括:
当执行完所述注入后数据处理函数时,对记录的函数调用路径中属于相同层级的函数进行封装,得到封装后的函数事件层级,其中,所述函数事件层级包括函数事件对象集合、以及函数事件对象之间的调用链路,所述函数事件对象集合包括相同层级下函数对应的函数事件对象,所述函数事件层级对应函数层级;
根据记录的函数调用路径,将所述函数事件层级封装成函数事件流,得到所述注入后数据处理函数对应的函数调用链路。
6.根据权利要求1所述的方法,其特征在于,所述当检测到针对目标函数层级中目标函数的操作时,对所述目标函数所调用的关联函数层级进行展示或隐藏,包括:
当检测到针对目标函数层级中目标函数的第一操作,且所述目标函数所调用的关联函数层级处于未展示状态时,展示所述关联函数层级;
当检测到针对目标函数层级中目标函数的第二操作,且所述目标函数所调用的关联函数层级处于展示状态时,隐藏所述关联函数层级。
7.根据权利要求1所述的方法,其特征在于,所述展示所述函数调用链路,包括:
将所述函数调用链路上传至预设数据可视化库中;
通过所述预设数据可视化库展示所述函数调用链路。
8.根据权利要求1所述的方法,其特征在于,所述函数调用链路还包括函数对应的可视化函数标识,所述方法还包括:
当检测到针对所述函数调用链路中目标函数的标识显示操作时,展示所述目标函数的目标可视化函数标识对应的目标原始函数标识。
9.根据权利要求8所述的方法,其特征在于,所述展示所述目标函数的目标可视化函数标识对应的目标原始函数标识,包括:
获取预设映射关系集合,所述预设映射关系集合包括函数的可视化函数标识与原始函数标识之间的映射关系;
通过所述目标函数的目标可视化函数标识、以及所述预设映射关系集合,确定所述目标可视化函数标识对应的目标原始函数标识;
展示所述目标函数的目标可视化函数标识对应的目标原始函数标识。
10.一种函数调用链路的展示装置,其特征在于,包括:
注入单元,用于对数据处理函数进行关键点注入,得到注入后数据处理函数;
记录单元,用于当执行至所述注入后数据处理函数中目标关键点对应的目标函数时,记录所述目标函数的函数调用路径,所述函数调用路径为从所述注入后数据处理函数中入口函数到目标函数的函数调用路径;
构建单元,用于当执行完所述注入后数据处理函数时,基于记录的函数调用路径构建所述注入后数据处理函数对应的函数调用链路,其中,所述函数调用链路包括至少一个函数层级,所述函数层级包括数据处理函数中处于相同层级的函数、以及各个函数之间的调用链路;
链路展示单元,用于展示所述函数调用链路;
层级展示单元,用于当检测到针对目标函数层级中目标函数的操作时,对所述目标函数所调用的关联函数层级进行展示或隐藏。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至9任一项所述的函数调用链路的展示方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010251530.9A CN111459547B (zh) | 2020-04-01 | 2020-04-01 | 一种函数调用链路的展示方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010251530.9A CN111459547B (zh) | 2020-04-01 | 2020-04-01 | 一种函数调用链路的展示方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459547A CN111459547A (zh) | 2020-07-28 |
CN111459547B true CN111459547B (zh) | 2021-10-08 |
Family
ID=71684388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010251530.9A Active CN111459547B (zh) | 2020-04-01 | 2020-04-01 | 一种函数调用链路的展示方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459547B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328335B (zh) * | 2020-11-30 | 2023-03-21 | 深圳前海微众银行股份有限公司 | 一种并发请求超时的诊断方法及装置、设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100394407C (zh) * | 2001-02-24 | 2008-06-11 | 国际商业机器公司 | 低等待时间存储器系统访问 |
CN110865927A (zh) * | 2019-11-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 区块链调用链路异常检测方法、装置和计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191411B2 (en) * | 2002-06-06 | 2007-03-13 | Moehrle Armin E | Active path menu navigation system |
KR100746029B1 (ko) * | 2006-01-11 | 2007-08-06 | 삼성전자주식회사 | 파일 시스템과 호환성을 유지하는 심볼릭 링크를 생성하는방법, 상기 심볼릭 링크를 이용하여 파일/디렉토리에접근하는 방법 및 장치 |
CN110019138B (zh) * | 2017-12-29 | 2022-06-03 | 中国移动通信集团公司 | 一种基于Zabbix的传输表空间自动迁移方法和系统 |
CN110134582A (zh) * | 2019-04-03 | 2019-08-16 | 口碑(上海)信息技术有限公司 | 测试用例的处理及数据处理方法及装置 |
-
2020
- 2020-04-01 CN CN202010251530.9A patent/CN111459547B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100394407C (zh) * | 2001-02-24 | 2008-06-11 | 国际商业机器公司 | 低等待时间存储器系统访问 |
CN110865927A (zh) * | 2019-11-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 区块链调用链路异常检测方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111459547A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124906B (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
US8719784B2 (en) | Assigning runtime artifacts to software components | |
US10409564B2 (en) | Recording and playback of development sessions | |
CN112090079B (zh) | 游戏任务运行方法、装置、计算机设备和存储介质 | |
EP3362902B1 (en) | Telemetry definition system | |
CN112494940B (zh) | 用户界面的制作方法、装置、存储介质及计算机设备 | |
CN111389014A (zh) | 游戏资源数据监控方法、装置、计算机设备和存储介质 | |
JP2020119348A (ja) | 解析プログラム、解析方法および解析装置 | |
Tveito et al. | Global Reproducibility Through Local Control for Distributed Active Objects. | |
CN116360735A (zh) | 一种表单生成方法、装置、设备和介质 | |
CN115576974A (zh) | 数据处理方法、装置、设备和介质 | |
CN113485909B (zh) | 测试方法、装置、计算设备以及介质 | |
CN111459547B (zh) | 一种函数调用链路的展示方法和装置 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
US20130239096A1 (en) | Application Programming Interface Tracing Mechanism | |
CN110908644A (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN107193734B (zh) | 用于移动Web应用的重放方法及重放系统 | |
CN115509913A (zh) | 软件自动化测试方法、装置、机器可读介质及设备 | |
Wannipurage et al. | A Framework to capture and reproduce the Absolute State of Jupyter Notebooks | |
CN113485686B (zh) | 信息系统程序的生成方法、装置、电子设备及存储介质 | |
CN113553065A (zh) | 一种代码文件发布方法及装置 | |
CN112232027A (zh) | 一种符号翻译方法、装置、设备和计算机可读存储介质 | |
US20240362153A1 (en) | Techniques for test automation portals for behavior-driven development | |
CN118444905B (zh) | 面向并行离散事件仿真调度的模型开发框架、方法和设备 | |
CN115982018B (zh) | 一种基于ocr的ui测试方法、系统、计算机设备和存储介质 |
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 |