CN113064838A - 一种代码调试方法、装置、用户设备、服务端及存储介质 - Google Patents
一种代码调试方法、装置、用户设备、服务端及存储介质 Download PDFInfo
- Publication number
- CN113064838A CN113064838A CN202110495537.XA CN202110495537A CN113064838A CN 113064838 A CN113064838 A CN 113064838A CN 202110495537 A CN202110495537 A CN 202110495537A CN 113064838 A CN113064838 A CN 113064838A
- Authority
- CN
- China
- Prior art keywords
- code
- data
- engine
- performance
- execution plan
- 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
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/362—Software debugging
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
本申请实施例提供一种代码调试方法、装置、用户设备、服务端及存储介质,其中方法包括:获取用户端发送的待调试代码;确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段;为第一代码段添加设定标识并解析为第一执行计划;将第一执行计划提交给数据引擎;获取数据引擎反馈的第一执行计划的性能开销数据并发送给用户端,第一执行计划的性能开销数据包括:第一执行计划的运行过程中,各引擎算子分别在至少一个性能开销维度的性能开销数据。本申请实施例可在代码调试时,从引擎算子的角度提供至少一个性能开销维度的精细化的性能开销数据;并且用户端可通过性能视图,展示该精细化的性能开销数据。
Description
技术领域
本申请实施例涉及数据开发技术领域,具体涉及一种代码调试方法、装置、用户设备、服务端及存储介质。
背景技术
代码调试是指运行用户编辑的代码,提供代码运行涉及的性能开销数据。代码调试提供的性能开销数据,能够方便用户定位代码的问题,提升用户编程质量。因此如何在代码调试时,提供精细化的性能开销数据一直是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请实施例提供一种代码调试方法、装置、用户设备、服务端及存储介质,以在代码调试时,提供精细化的性能开销数据。
第一方面,本申请实施例提供一种代码调试方法,所述方法应用于服务端,所述方法包括:
获取用户端发送的待调试代码;
确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段;
为所述第一代码段添加设定标识,将添加所述设定标识的第一代码段解析为第一执行计划;所述设定标识用于指示数据引擎需针对第一执行计划提供引擎算子角度的性能开销数据;
将所述第一执行计划提交给数据引擎;
获取数据引擎反馈的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:第一执行计划的运行过程中,第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;
将所述第一执行计划的性能开销数据发送给用户端。
第二方面,本申请实施例提供一种代码调试方法,所述方法应用于用户端,所述方法包括:
响应于用户对待调试代码的调试操作,向服务端发送调试请求,所述调试请求携带待调试代码;
获取服务端发送的所述待调试代码中第一代码段对应的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:数据引擎在运行第一执行计划的过程中,记录的各引擎算子分别在至少一个性能开销维度的性能开销数据;所述第一代码段为所述待调试代码中用于数据引擎的标准数据操作的代码段;
通过性能视图展示所述第一执行计划的性能开销数据。
第三方面,本申请实施例提供一种代码调试装置,所述装置应用于服务端,所述装置包括:
代码获取模块,用于获取用户端发送的待调试代码;
第一代码段确定模块,用于确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段;
计划解析模块,用于为所述第一代码段添加设定标识,将添加所述设定标识的第一代码段解析为第一执行计划;所述设定标识用于指示数据引擎需针对第一执行计划提供引擎算子角度的性能开销数据;
提交模块,用于将所述第一执行计划提交给数据引擎;
数据获取模块,用于获取数据引擎反馈的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:第一执行计划的运行过程中,第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;
数据发送模块,用于将所述第一执行计划的性能开销数据发送给用户端。
第四方面,本申请实施例提供一种代码调试装置,所述装置应用于用户端,所述装置包括:
调试请求模块,用于响应于用户对待调试代码的调试操作,向服务端发送调试请求,所述调试请求携带待调试代码;
性能开销数据获取模块,用于获取服务端发送的所述待调试代码中第一代码段对应的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:数据引擎在运行第一执行计划的过程中,记录的各引擎算子分别在至少一个性能开销维度的性能开销数据;所述第一代码段为所述待调试代码中用于数据引擎的标准数据操作的代码段;
性能开销数据展示模块,用于通过性能视图展示所述第一执行计划的性能开销数据。
第五方面,本申请实施例提供一种服务端,所述服务端包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行如上述第一方面所述的代码调试方法。
第六方面,本申请实施例提供一种用户设备,所述用户设备运行有用户端,所述用户设备包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行如上述第二方面所述的代码调试方法。
第七方面,本申请实施例提供一种存储介质,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令被执行时,实现如上述第一方面所述的代码调试方法,或者,如上述第二方面所述的代码调试方法。
本申请实施例提供的代码调试方法中,服务端可获取用户端发送的待调试代码,确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段。针对第一代码段,本申请实施例可从引擎算子的角度,记录至少一个性能开销维度的性能开销数据,并在用户端以性能视图的方式展示性能开销数据。因此为使得数据引擎在运行执行计划时,能够识别第一代码段对应的第一执行计划,服务端可为第一代码段添加设定标识,并将添加设定标识的第一代码段解析为第一执行计划。从而,服务端将第一执行计划提交给数据引擎后,数据引擎可基于第一执行计划携带的设定标识,确定需针对第一执行计划提供引擎算子角度的性能开销数据,以便用户端后续以性能视图的形式展示性能开销数据。进而,数据引擎可在运行第一执行计划的过程中,从至少一个性能开销维度,记录第一执行计划中的各引擎算子的性能开销数据,得到第一执行计划的性能开销数据。服务端获取数据引擎反馈的第一执行计划的性能开销数据后,可将第一执行计划的性能开销数据发送给用户端,以便用户端通过性能视图进行展示。
本申请实施例提供的代码调试方案,可基于待调试代码中的代码段形成执行计划,并且针对用于数据引擎的标准数据操作的第一代码段,本申请实施例可提供各引擎算子在至少一个性能开销维度的性能开销数据。即,针对第一代码段对应的第一执行计划,本申请实施例可从引擎算子的角度,在至少一个性能开销维度提供精细化的性能开销数据。同时,第一执行计划的精细化的性能开销数据可在用户端以性能视图的方式进行展示,以便用户能够清晰的了解到第一执行计划的精细化的性能开销数据。可见,本申请实施例提供的代码调试方案可在代码调试时,提供精细化的性能开销数据,并以性能视图的方式进行展示,能够方便用户快速定位代码的问题,提升用户编程质量。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例的系统的架构图。
图2为本申请实施例提供的代码调试方法的流程图。
图3a为用户端的部分界面的示意图。
图3b为用户端的部分界面的另一示意图。
图4为本申请实施例提供的代码调试方法的实现过程示意图。
图5a为用户端的部分界面的再一示意图。
图5b为用户端的部分界面的又一示意图。
图5c为用户端的部分界面的又另一示意图。
图5d为用户端的部分界面的又再一示意图。
图5e为用户端的部分界面的另又一示意图。
图6a为展示待调试代码的性能开销问题的建议数据以及帮助文档链接的示意图。
图6b 为界面的运行日志视窗的示意图。
图6c为界面的运行日志视窗的另一示意图。
图6d为展示多个分析视窗的示意图。
图6e为界面比对多个待调试代码的性能开销数据的示意图。
图6f为界面展示供选择的数据引擎的示意图。
图7为本申请实施例提供的代码调试装置的框图。
图8为服务端的架构图。
图9为本申请实施例提供的代码调试装置的另一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
用户在编辑完成代码后,可使用代码调试功能进行代码调试。例如,用户编辑完成的代码可解析为数据引擎可运行的执行计划,从而数据引擎运行该执行计划并返回运行结果,以通过运行结果携带代码整体的性能开销数据(例如,用户编辑的代码整体的运行耗时、在数据引擎中的查询行数等)。然而运行结果中的性能开销数据只是与用户编辑的整体代码相对应,这并不利于用户快速定位代码中的问题。因此如何改进代码调试方案,以提供精细化的性能开销数据,成为了亟需解决的问题。
图1示出了本申请实施例的系统100的架构图。本申请实施例提供的代码调试方案可基于该系统100实施。如图1所示,该系统100可以包括:用户端110,服务端120,数据引擎130。
用户端110可以是用户使用的客户端。用户端110可以提供代码调试接口,当用户激活该代码调试接口时,用户端110可与服务端120进行交互,对用户编辑完成的代码进行调试。在本申请实施例的代码调试层面,用户端120主要实现与用户的操作交互、与服务端120的数据交互,以及数据显示(例如以性能视图的形式,显示性能开销数据)等。在另外一些实施例中,用户端110还可针对用户编辑完成的代码提供直译、预编译、编译、运行、剖析运行日志等功能的接口。在进一步的一些实施例中,用户端110还可集成代码编辑功能。例如,在代码编辑过程中,用户端110可实现与用户操作的交互,以及代码编辑的显示功能等。
在一些实施例中,用户端110可通过程序产品的形式安装在手机、PC(个人计算机)等用户设备上,用户端110也可能是用户设备以网页等形式加载获得。
服务端120可以认为是与用户端110相对应的服务器设备。服务端120可为用户端110提供代码调试、直译、预编译、编译等功能的服务支持。服务端120与用户端110可通过网络(例如互联网、内网等不同形式的网络)通信。
数据引擎130可以是与服务端120交互的数据库引擎,例如SQL(Structured QueryLanguage,结构化查询语言)数据库引擎等。在本申请实施例中,数据引擎130可基于执行计划实现代码运行、代码调试。例如,待调试的代码需要解析为数据引擎可运行的执行计划,从而数据引擎运行该执行计划,使得代码与代码操作的实际数据发生关系,以实现代码运行。
在本申请实施例中,数据引擎130还可输出精细化的性能开销数据。数据引擎130输出的精细化的性能数据,可通过服务端120传递给用户端110。从而用户端110可在代码调试完成时,向用户展示精细化的性能开销数据。下面对本申请实施例提供的代码调试方案的实现过程进行介绍。
基于图1所示系统100,图2示出了本申请实施例提供的代码调试方法的流程图。如图2所示,该流程可以包括如下步骤。
在步骤S211中,用户端向服务端发送调试请求,所述调试请求携带待调试代码。
所述待调试代码可以例如用户编辑完成的代码文档,或者,用户从编辑完成的代码文档中选择的代码内容。
在一些实施例中,用户编辑完成的代码文档可命名文档名称并存放在代码数据库中。用户端可提供界面(例如代码开发、编辑界面),用户可在该界面选择进行调试的代码对应的代码数据库以及文档名称,从而用户端可从选择的代码数据库中导出选择的文档名称对应的代码文档。针对用户端导出的代码文档,用户可选择对代码文档进行调试(此时代码文档中的所有代码,成为待调试代码),也可以选择对代码文档中的代码内容进行调试(此时代码文档中选择的代码内容,成为待调试代码)。
在一个示例中,图3a示出了用户端的部分界面的示意图。如图3a所示,用户可在界面的数据库选项中选择代码数据库,在连接名选项中选择文档名称。用户端导出代码文档后,如果用户在界面直接点击运行分析按钮(界面展示的运行分析按钮可与代码调试接口相对应,运行分析按钮被点击,则代码调试接口被激活),此时用户端可确定对代码文档进行调试,用户端可生成携带所述代码文档的调试请求并发送给服务端。
用户也可从代码文档中选择代码内容进行调试,图3b示出了用户端的部分界面的另一示意图。由图3b可以看出,用户可使用光标在界面显示的代码文档中选取代码内容(代码文档中选择的代码内容可突出显示),然后再点击运行分析按钮,此时用户端可确定对用户从代码文档中选择的代码内容进行调试。用户端可生成携带所选择的代码内容的调试请求并发送给服务端。
可以看出,用户端在确定待调试代码(例如代码文档中所有的代码,或者,代码文档中用户选择的代码内容)后,可通过调试操作(例如点击运行分析按钮),生成调试请求。从而用户端将携带待调试代码的调试请求发送给服务端。也就是说,在用户对待调试代码执行调试操作时,用户端可响应于用户对待调试代码的调试操作,向服务端发送调试请求,所述调试请求携带待调试代码。
在步骤S212中,服务端将所述待调试代码分割为至少一个代码段。
待调试代码可能存在多个代码部分,服务端获取到待调试代码后,可对待调试代码进行分割,得到至少一个代码段(例如一个或多个代码段)。在一些实施例中,服务端可根据预设分割符号(例如分号符号),对待调试代码进行分割,得到至少一个代码段。例如,服务端可识别待调试代码中的分号符号,将分号符号所对应的代码语句作为代码段,实现对待调试代码进行分割。在一些实施例中,服务端也可根据语法配置,对待调试代码进行分割,得到至少一个代码段。例如,服务端可设置与语法配置对应的预设分割字符,从而服务端可识别待调试代码中的预设分割字符,将预设分割字符所对应的代码语句作为代码段,实现对待调试代码进行分割。
服务端根据预设分割符号和/或预设分割字符,对待调试代码进行分割,得到至少一个代码段,可使得待调试代码能够按照用户编辑代码时的意图,分割成多个代码部分(一个代码部分可视为是一个代码段),实现对待调试代码的代码内容进行精细化区分。
在步骤S213中,服务端确定所述至少一个代码段中用于数据引擎的标准数据操作的第一代码段。
在步骤S214中,服务端为所述第一代码段添加设定标识,并将添加设定标识的第一代码段解析为第一执行计划,所述第一执行计划携带所述设定标识。
在步骤S215中,服务端将所述第一执行计划提交给数据引擎。
区别于将待调试代码整体解析为数据引擎可运行的执行计划,本申请实施例是针对待调试代码中的各代码段,分别解析得到执行计划,即一个代码段可对应解析为一个执行计划。执行计划可以认为是代码在运行时的运行过程或者访问路径的描述。执行计划可以包括一个或多个引擎算子,引擎算子可以认为是数据引擎运行执行计划的各个执行节点。执行计划中的引擎算子可按照执行顺序(如开始至结束的顺序)进行连接。
为便于说明,待调试代码分割得到的至少一个代码段中,用于数据引擎的标准数据操作的代码段可称为第一代码段,而所述至少一个代码段中与第一代码段不同的代码段可称为第二代码段。所述标准数据操作例如数据引擎的如下任一项:标准数据查询操作、标准数据操纵操作、标准数据定义操作、标准数据控制操作等。
可以理解的是,所述至少一个代码段中的第一代码段可能是一个或多个,具体存在如下几种情况:
一、各个代码段可能均是用于所述标准数据操作的第一代码段,此时,服务端可为各第一代码段添加设定标识,并分别解析为第一执行计划;
二、同时存在一个或多个第一代码段,以及一个或多个第二代码段;此时,服务端可为各第一代码段添加设定标识,并分别解析为第一执行计划,而将各第二代码段直接解析为第二执行计划;
三、不存在第一代码段,仅存在第二代码段,此时,服务端可直接将各第二代码段直接解析为第二执行计划。
为便于说明,第一代码段解析成的执行计划可称为第一执行计划,第二代码段解析成的执行计划可称为第二执行计划。
在本申请实施例中,由于第一代码段解析成的第一执行计划在运行时,涉及到数据引擎的标准数据操作(即符合数据引擎的标准操作),因此数据引擎在第一执行计划的运行过程中,可记录到相对丰富的过程数据。从而,数据引擎在第一执行计划的运行的过程中,支持提供精细化的性能开销数据。在一些实施例中,数据引擎可在第一执行计划的运行过程中,支持从至少一个性能开销维度,记录引擎算子的性能开销数据,以针对第一执行计划提供精细化的性能开销数据。并且在本申请实施例中,用户端针对第一执行计划,可通过性能视图的方式展示出精细化的性能开销数据。
而针对第二代码段解析成的第二执行计划,数据引擎不支持提供精细化的性能开销数据。例如,数据引擎可反馈第二执行计划的运行结果,由第二执行计划的运行结果体现第二执行计划整体的性能开销数据。
基于上述描述,服务端在将待调试代码分割为至少一个代码段后,可判断所述至少一个代码段中是否存在用于数据引擎的标准数据操作的第一代码段。若所述至少一个代码段中存在第一代码段,则服务端可为所述第一代码段添加设定标识,并将添加设定标识的第一代码段解析为第一执行计划,从而第一执行计划可携带所述设定标识。进而,服务端将所述第一执行计划提交给数据引擎后,数据引擎可基于第一执行计划携带的设定标识,确定运行第一执行计划时,支持提供精细化的性能开销数据(例如,从至少一个性能开销维度,记录第一执行计划中的各引擎算子的性能开销数据)。并且,性能开销数据可在用户端通过性能视图的方式进行展示。也就是说,所述设定标识可用于指示数据引擎需针对第一执行计划提供精细化的性能开销数据;例如,所述设定标识可用于指示数据引擎需针对第一执行计划提供引擎算子角度的性能开销数据。
在进一步的一些实施例中,如果待调试代码分割得到的至少一个代码段中存在第二代码段,则服务端可将第二代码段解析为第二执行计划,并将所述第二执行计划提交给数据引擎。由于第二执行计划未携带设定标识,则数据引擎在运行第二执行计划之后,提供第二执行计划的运行结果,由第二执行计划的运行结果体现第二执行计划整体的性能开销数据。
在一些实施例中,步骤S212至步骤S215可具体由服务端的编译器执行实现。
需要说明的是,步骤S212和步骤S213是服务端确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段的可选实现手段。在其他可能的实现中,待调试代码也可由用户段进行分割,例如所述调试请求中可携带分割后的代码段。从而,服务端可从已分割的代码段中,确定用于数据引擎的标准数据操作的第一代码段。
在步骤S216中,数据引擎基于所述第一执行计划携带的设定标识,在运行所述第一执行计划的过程中,从至少一个性能开销维度,记录第一执行计划中的各引擎算子的性能开销数据,以得到第一执行计划的性能开销数据。
数据引擎获得服务端提交的第一执行计划后,可基于第一执行计划中携带的设定标识,确定需在运行第一执行计划时提供精细化的性能开销数据,以便用户端后续以性能视图的方式展示第一执行计划的性能开销数据。从而,数据引擎可运行第一执行计划,并在运行第一执行计划的过程中,从至少一个性能开销维度,记录第一执行计划中的各引擎算子的性能开销数据。进而,第一执行计划运行完成后,数据引擎可获得第一执行计划中的各引擎算子,分别在至少一个性能开销维度的性能开销数据。第一执行计划中的各引擎算子分别在至少一个性能开销维度的性能开销数据,可形成第一执行计划的性能开销数据。
在一些实施例中,所述至少一个性能开销维度可以是多个性能开销维度,一个性能开销维度可以对应一个性能开销参数。例如,所述至少一个性能开销维度可以包括如下至少一项:运行耗时、消耗内存、处理行数(例如查询使用的行数等)、以及IO(读写)次数等。在一个示例中,所述第一执行计划的性能开销数据可以包括:第一执行计划中的各引擎算子分别在运行耗时、消耗内存、处理行数以及IO次数的性能开销数据。
在进一步的一些实施例中,数据引擎运行第一执行计划后,还可获得第一执行计划的运行结果。
在进一步的一些实施例中,如果数据引擎还获得服务端提交的第二执行计划,由于第二执行计划未携带设定标识,数据引擎可确定针对第二执行计划不提供精细化的性能开销数据。从而,数据引擎运行第二执行计划并向服务端反馈第二执行计划的运行结果。
执行计划(不限于第一执行计划还是第二执行计划)的运行结果可以包含执行计划是否运行成功等运行描述信息,以及执行计划的整体性能开销数据等。
在步骤S217中,数据引擎将第一执行计划的性能开销数据反馈给服务端。
在步骤S218中,服务端将第一执行计划的性能开销数据发送给用户端。
在步骤S219中,用户端以性能视图,展示所述第一执行计划的性能开销数据。
数据引擎获得精细化的第一执行计划的性能开销数据后,可将第一执行计划的性能开销数据通过服务端发送给用户端。用户端获取第一执行计划的性能开销数据后,可通过性能视图的方式展示第一执行计划的性能开销数据。在一些实施例中,用户端可通过性能视图,展示第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据。例如,用户端可通过性能视图,展示第一执行计划中的各引擎算子分别在运行耗时、消耗内存、处理行数以及IO次数的性能开销数据。
在一些实施例中,所述性能视图可以例如PERT(Program Evaluation and ReviewTechnique,计划评审技术)视图。PERT视图通常为单一流方向,时间是PERT视图的一个必要维度,PERT视图以点线图规划整个流程,并依排定完成流程。当然,用户端也可采用其他形式的性能视图,并不限于PERT 视图。
在进一步的一些实施例中,服务端还可将第一执行计划的运行结果反馈给用户端。如果数据引擎还存在运行第二执行计划的情况,则服务端还可获取到数据引擎反馈的第二执行计划的运行结果。从而,服务端还可将第二执行计划的运行结果发送给用户端。需要说明的是,性能视图是用于展示第一执行计划的性能开销数据,而不用于展示第一执行计划的运行结果、第二执行计划的运行结果;第一执行计划的运行结果、第二执行计划的运行结果可通过文字描述等方式进行展示。
需要进一步说明的是,如果待调试代码包含多个第一代码段,则各第一代码段添加设定标识并分别解析为第一执行计划后,可得到多个第一执行计划(例如,添加设定标识的一个第一代码段解析为一个第一执行计划)。从而,数据引擎在运行各个第一执行计划,并获得各个第一执行计划的性能开销数据后,服务端可从数据引擎获取到多个第一执行计划的运行结果以及性能开销数据。服务端可将多个第一执行计划的运行结果以及性能开销数据发送给用户端,此时,用户端可获取到多个第一执行计划的运行结果以及性能开销数据。用户端可按照多个第一执行计划的执行顺序,在一个性能视图中,展示多个第一执行计划的性能开销数据。例如,用户端可按照多个第一执行计划中各引擎算子的执行顺序,在一个性能视图中,展示多个第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据。以PERT视图为例,PERT视图的流向为由下到上,从而用户端可在PERT视图中,按照多个第一执行计划中各引擎算子的执行顺序,由下至上的展示多个第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据。
当然,本申请实施例也可支持所述待调试代码仅有一个代码段的情况,该一个代码段可能是第一代码段,也可能是第二代码段。
本申请实施例提供的代码调试方法中,服务端可获取用户端发送的待调试代码,确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段。针对第一代码段,本申请实施例可从引擎算子的角度,记录至少一个性能开销维度的性能开销数据,并在用户端以性能视图的方式展示性能开销数据。因此为使得数据引擎在运行执行计划时,能够识别第一代码段对应的第一执行计划,服务端可为第一代码段添加设定标识,并将添加设定标识的第一代码段解析为第一执行计划。从而,服务端将第一执行计划提交给数据引擎后,数据引擎可基于第一执行计划携带的设定标识,确定需针对第一执行计划提供引擎算子角度的性能开销数据,以便用户端后续以性能视图的形式展示性能开销数据。进而,数据引擎可在运行第一执行计划的过程中,从至少一个性能开销维度,记录第一执行计划中的各引擎算子的性能开销数据,得到第一执行计划的性能开销数据。服务端获取数据引擎反馈的第一执行计划的性能开销数据后,可将第一执行计划的性能开销数据发送给用户端,以便用户端通过性能视图进行展示。
本申请实施例提供的代码调试方案,可基于待调试代码中的代码段形成执行计划,并且针对用于数据引擎的标准数据操作的第一代码段,本申请实施例可提供各引擎算子在至少一个性能开销维度的性能开销数据。即,针对第一代码段对应的第一执行计划,本申请实施例可从引擎算子的角度,在至少一个性能开销维度提供精细化的性能开销数据。同时,第一执行计划的精细化的性能开销数据可在用户端以性能视图的方式进行展示,以便用户能够清晰的了解到第一执行计划的精细化的性能开销数据。可见,本申请实施例提供的代码调试方案可在代码调试时,提供精细化的性能开销数据,并以性能视图的方式进行展示,能够方便用户快速定位代码的问题,提升用户编程质量。
在图2所示步骤S213的一种可选实现中,服务端可基于代码段对应的语言类型,确定所述至少一个代码段中的第一代码段。在一些实施例中,服务端可预先设置数据引擎的标准语言类型,数据引擎的一种标准语言类型可对应数据引擎的一种标准数据操作。例如,SQL数据引擎的标准语言类型包括如下任一项:数据查询语言(Data Query Language,DQL)、数据操纵语言(Data Manipulation Language,DML)、数据定义语言(DataDefinition Language,DDL)以及数据控制语言(Data Control Language,DCL)。其中,DQL可对应标准数据查询操作、DML可对应标准数据操纵操作、DDL可对应标准数据定义操作、DCL可对应标准数据控制操作。
针对待调试代码中的任一个代码段,服务端可确定该代码段对应的语言类型,若该代码段对应的语言类型为数据引擎的标准语言类型,则可确定该代码段为第一代码段,否则(即,该代码段对应的语言类型不为数据引擎的标准语言类型),确定该代码段为第二代码段。例如,服务端可确定该代码段对应的语言类型是否为DQL、DML、DDL、DCL中的任一项,若是,则该代码段为第一代码段,若否,则该代码段为第二代码段。
针对第一代码段,服务端在第一代码段中添加的设定标识可以是设定语言标识,用于指示第一代码段对应的语言类型为数据引擎的标准语言类型。进而,添加设定语言标识的第一代码段解析为第一执行计划,并发送给数据引擎后,数据引擎可通过第一执行计划携带的设定语言标识,确定运行第一执行计划所进行的数据操作符合数据引擎的标准语言类型,可为第一执行计划提供精细化的性能开销数据。
在一个示例中,以DML或DQL为标准语言类型为例,图4示出了本申请实施例提供的代码调试方法的实现过程示意图。如图4所示,代码410为用户端发送给服务端的待调试代码。以代码410分割成3个代码段为例,服务端可将代码410分割为代码段411、412和413。服务端可分别判断代码段411、412和413的语言类型是否为DML或DQL。以代码段411和412的语言类型为DML或DQL,代码段413的语言类型不为DML或DQL为例,则代码段411和412可分别成为第一代码段,代码段413可成为第二代码段。服务端可分别为代码段411和412添加设定语言标识,并分别解析为第一执行计划421和422。而针对代码段413,服务端可将代码段413解析为第二执行计划423。服务端可将第一执行计划421、第一执行计划422和第二执行计划423提交给数据引擎。
针对第一执行计划421,由于第一执行计划421中携带设定语言标识,因此数据引擎可在运行第一执行计划421的过程中,记录引擎算子分别在运行耗时、消耗内存、处理行数以及IO次数的性能开销数据,得到第一执行计划421的性能开销数据。数据引擎可将第一执行计划421的性能开销数据以及运行结果反馈给服务端。同理,数据引擎在运行第一执行计划422的过程中,记录引擎算子分别在运行耗时、消耗内存、处理行数以及IO次数的性能开销数据,得到第一执行计划422的性能开销数据。数据引擎可将第一执行计划422的性能开销数据以及运行结果反馈给服务端。而针对第二执行计划423,由于第二执行计划423未携带设定语言标识,数据引擎在运行第二执行计划423后,可得到第二执行计划423的运行结果,将第二执行计划423的运行结果反馈给服务端。
进一步的,服务端可将第一执行计划421的性能开销数据和运行结果、第一执行计划422的性能开销数据和运行结果、第二执行计划423的运行结果反馈给用户端。
在用户端的展示层面,用户端在展示第一执行计划421和422的性能开销数据时,可通过PERT 视图,按照由下至上的顺序(例如靠前执行的引擎算子位于PERT 视图的下方),展示第一执行计划421和422的各引擎算子分别在运行耗时、消耗内存、处理行数以及IO次数的性能开销数据。而针对第一执行计划421和422以及第二执行计划423的运行结果,用户端可通过文字描述等方式进行展示。
本申请实施例提供的代码调试方案,可针对待调试代码中标准语言类型的第一代码段,添加设定语言标识并解析为第一执行计划;从而数据引擎在运行第一执行计划的过程中,可在至少一个性能开销维度,提供引擎算子角度的精细化性能开销数据。并且,用户端在展示第一执行计划的性能开销数据时,可通过性能视图的方式,展示第一执行计划的各引擎算子的精细化性能开销数据,以便用户可从引擎算子的角度,了解至少一个性能开销维度的性能开销数据,更为方便用户定位待调试代码中的问题。
下面从用户端的展示角度,对本申请实施例提供的代码调试方案进行介绍。当用户端获取到服务端发送的一个或多个第一执行计划的性能开销数据后,用户端可在界面展示分析视窗(例如在界面自动弹出分析视窗),从而在分析视窗内显示性能视图(例如PERT视图),通过性能视图展示第一执行计划的各引擎算子分别在至少一个性能开销维度(例如运行耗时、消耗内存、处理行数以及IO次数等性能开销维度)的性能开销数据。
图5a示出了用户端的部分界面的再一示意图。如图5a所示,分析视窗内显示的PERT视图具有第一执行计划的各引擎算子的性能开销展示框,一个性能开销展示框可用于展示一个引擎算子的概要性能开销数据。PERT视图中各引擎算子的性能开销展示框,可按照引擎算子的执行顺序依序连接。例如,按照引擎算子的执行顺序,在PERT视图中由下至上的连接各引擎算子的性能开销展示框。进一步的,分析视窗可具有用于选择性能开销维度的性能开销维度选框。如图5b所示部分界面的又一示意图,性能开销维度选框可支持选择运行耗时、消耗内存、处理行数以及IO次数等不同的性能开销维度。当然,此处所示的性能开销维度的类型仅是一种可选示例。
结合图5a所示,当性能开销维度选框中选择运行耗时的性能开销维度时,PERT视图中的各引擎算子的性能开销展示框,可展示各引擎算子在运行耗时上的概要性能开销数据(例如各引擎算子的运行具体耗时、运行耗时的开销占比等)。同理,当性能开销维度选框中选择消耗内存的性能开销维度时,PERT视图中的各引擎算子的性能开销展示框,可展示各引擎算子在消耗内存上的概要性能开销数据。也就是说,用户端可根据性能开销维度选框中当前选择的性能开销维度,在PERT视图中的各引擎算子的性能开销展示框,展示各引擎算子在当前选择的性能开销维度上的概要性能开销数据。
在一些实施例中,PERT视图(性能视图的一种可选形式)可以具有初始展示状态。用户端可以预先配置默认性能开销维度,从而在PERT视图初始展示时,PERT视图中的各引擎算子的性能开销展示框,可展示各引擎算子在默认性能开销维度上的概要性能开销数据;此时,默认性能开销维度可以认为是初始默认选择的性能开销维度。例如,用户端预先配置默认性能开销维度为运行耗时,则在PERT视图初始展示时,PERT视图中的各引擎算子的性能开销展示框,可展示各引擎算子在运行耗时上的概要性能开销数据。在进一步的一些实施例中,PERT视图在初始展示时,用户端可确定默认性能开销维度的性能开销数据最高的引擎算子,将PERT视图的视觉焦点聚集(focus)在该引擎算子的性能开销展示框。例如,PERT视图在初始展示时,用户端可将PERT视图的视觉焦点聚集(focus)在运行耗时最高的引擎算子对应的性能开销展示框。在进一步的一些实施例中,PERT视图在初始展示时,分析视窗可展开性能开销维度选框中配置的性能开销维度,以便用户了解到PERT视图可以选择查看性能开销数据的性能开销维度。在上述描述的基础上,用户可从性能开销维度选框中选择的性能开销维度,以调整PERT视图中各性能开销展示框展示的概要性能开销数据的性能开销维度。
在进一步的一些实施例中,引擎算子的性能开销展示框还可根据引擎算子在当前选择的性能开销维度的开销量(例如开销热度)展示相应的颜色,从而通过不同性能开销展示框的颜色,体现不同引擎算子的开销热度,反映出引擎算子在当前选择的性能开销维度的开销热度分布。例如,引擎算子的性能开销展示框可按照引擎算子在当前选择的性能开销维度的开销量展示不同的颜色,引擎算子在当前选择的性能开销维度的开销量越高,则性能开销展示框的颜色越深,从而可通过不同性能开销展示框的颜色,体现不同引擎算子的开销热度。
在本申请实施例中,引擎算子的性能开销展示框,展示的是引擎算子在当前选择的性能开销维度上的概要性能开销数据,而不是详细性能开销数据。本申请实施例还可支持在用户选择某一引擎算子的性能开销展示框时,在分析视窗中进一步展示该引擎算子的详细性能开销数据。图5c示出了用户端的部分界面的又另一示意图。如图5c所示,当用户选择sort这一引擎算子的性能开销展示框时,分析视窗的左部可显示该引擎算子的详细性能开销数据展示区,该详细性能开销数据展示区中可展示sort这一引擎算子的描述,以及该引擎算子在至少一个性能开销维度(例如运行耗时、消耗内存、处理行数以及IO次数等)的详细性能开销数据。也就是说,用户端可基于用户当前选择的引擎算子,在分析视窗展示当前选择的引擎算子的详细性能开销数据展示区,该详细性能开销数据展示区中展示有当前选择的引擎算子的描述,以及在至少一个性能开销维度的详细性能开销数据。
可以看出,基于当前选择的性能开销维度,本申请实施例支持在PERT视图中的各引擎算子的性能开销展示框,展示各引擎算子在当前选择的性能开销维度上的概要性能开销数据。当用户选择某一引擎算子时(例如点击PERT视图中某一引擎算子的性能开销展示框),分析视窗可展示所选择的引擎算子的详细性能开销数据展示区,并在该详细性能开销数据展示区展示所选择的引擎算子的描述,以及在至少一个性能开销维度的详细性能开销数据。
在进一步的一些实施例中,本申请实施例还可支持对PERT视图进行缩放(缩小或者放大)。图5d示出了用户端的部分界面的又再一示意图。如图5d所示,分析视窗可提供PERT视图的放大按钮和缩小按钮,当用户操作放大按钮时,用户端可确定用户操作的PERT视图的放大比例,根据放大比例,对PERT视图进行放大。当用户操作缩小按钮时,用户端可确定用户操作的PERT视图的缩小比例,根据缩小比例,对PERT视图进行缩小。也就是说,用户端可根据用户对PERT视图的缩放操作,确定PERT视图的缩放比例值(例如zoom值),从而用户端可根据该缩放比例值,对PERT视图中的内容进行重新渲染。例如,当 zoom 值越大,则PERT视图中渲染的性能开销展示框的形状越大、展示内容越多;当zoom值越小,则PERT视图中渲染的性能开销展示框的形状越小、展示内容越少。当zoom值变换时,用户端可维持PERT视图在分析视窗的位置及其中的性能开销展示框的布局,而依据新的zoom 值更改性能开销展示框的形状大小,和展示的内容信息。
在进一步的一些实施例中,分析视窗还可提供引擎算子选择框,用于用户从引擎算子选择框中选择引擎算子。图5e示出了用户端的部分界面的另又一示意图。如图5e所示,引擎算子选择框中展示有第一执行计划的各个引擎算子,以及各个引擎算子在当前选择的性能开销维度的开销占比。用户可从引擎算子选择框中选择引擎算子,从而定位到PERT视图中选择的引擎算子对应的性能开销展示框。在进一步的一些实施例中,用户从引擎算子选择框中选择引擎算子时,分析视窗也可展示所选择的引擎算子的详细性能开销数据展示区。
需要说明的是,引擎算子的性能开销展示框,展示引擎算子在当前选择的性能开销维度上的概要性能开销数据,仅是一种可选展示方式。本申请实施例也可支持在引擎算子的性能开销展示框,展示引擎算子在当前选择的性能开销维度上更为全面的性能开销数据。
在本申请实施例中,用户端可在界面展示分析视窗,从而通过分析视窗内的性能视图,展示第一执行计划的各引擎算子分别在各个性能开销维度的性能开销数据。并且,分析视窗支持用户在性能开销维度选框中,选择当前展示性能开销数据的性能开销维度。用户选择性能视图中某一引擎算子的性能开销展示框,或者用户从引擎算子选择框中选择某一引擎算子后,分析视窗可展示出该引擎算子的详细性能开销数据展示区。同时,分析视窗支持用户缩放性能视图。本申请实施例可通过性能视图,展示第一执行计划的各引擎算子分别在各个性能开销维度的性能开销数据,并且支持展示各引擎算子的详细性能开销数据,从而用户可通过用户端的展示,了解到第一执行计划精细化的性能开销数据。
在进一步的一些实施例中,数据引擎还可对待调试代码整体提出建议数据,以及对第一执行计划的引擎算子提供建议数据。例如,数据引擎在待调试代码调试完成后,可得到待调试代码的运行结果,从而数据引擎可分析待调试代码的运行结果,确定待调试代码的性能开销问题(例如,待调试代码的整体处理耗时较高,整体处理行数较多等性能开销问题)。进而数据引擎可在专家库中匹配,待调试代码的性能开销问题对应的建议数据以及帮助文档链接(该帮助文档链接可提供解决代码的性能开销问题的具体文档);其中,专家库中可记录代码的各种性能开销问题对应的建议数据和帮助文档链接。数据引擎确定待调试代码的性能开销问题对应的建议数据以及帮助文档链接之后,可通过服务端反馈给用户端。用户端可展示出待调试代码的性能开销问题对应的建议数据以及帮助文档链接。图6a示出了用户端展示待调试代码的性能开销问题的建议数据以及帮助文档链接的示意图,可进行参照。
在进一步的一些实施例中,数据引擎可确定第一执行计划中引擎算子的性能开销问题(例如,引擎算子的处理耗时较高、消耗内存较高、IO次数较多等性能开销问题)。从而,数据引擎可在专家库中匹配,引擎算子的性能开销问题对应的建议数据以及帮助文档链接;其中,专家库中可记录引擎算子的各种性能开销问题对应的建议数据和帮助文档链接。进而数据引擎可将引擎算子的性能开销问题对应的建议数据以及帮助文档链接,通过服务端反馈给用户端。用户端可展示出引擎算子的性能开销问题对应的建议数据以及帮助文档链接。在一个示例中,用户在选择引擎算子时,用户端还可在该引擎算子的详细性能开销数据展示区,展示出该引擎算子的性能开销问题对应的建议数据和帮助文档链接。也就是说,用户端可以获取第一执行计划的引擎算子的性能开销问题对应的建议数据以及帮助文档链接,并在引擎算子的详细性能开销数据展示区进行展示。
在进一步的一些实施例中,用户在引擎算子的详细性能开销数据展示区中选择建议数据时,用户端可确定待调试代码中与该引擎算子对应的代码内容,从而方便用户定位到待调试代码中存在问题的代码内容,以便用户进行进一步的调试。用户在引擎算子的详细性能开销数据展示区中选择帮助文档链接后,界面可跳转到帮助文档链接对应的文档内容。
在进一步的一些实施例中,数据引擎在运行待调试代码的各执行计划时(不限于第一执行计划和第二执行计划),还可将各执行计划的运行日志以及运行结果,实时的通过服务端反馈给用户端。从而用户端可在待调试代码进行调试的过程中,获取到各执行计划实时的运行日志以及运行结果,并在界面的运行日志视窗中,实时的展示各执行计划实时的运行日志以及运行结果。数据引擎还可在待调试代码调试完成后,将待调试代码整体的运行结果通过服务端反馈给用户端。从而用户端可在待调试代码调试完成后,获取到待调试代码整体的运行结果,并在运行日志视窗进行展示。
图6b 示出了界面的运行日志视窗的示意图。如图6b所示,在待调试代码进行调试的过程中,运行日志视窗可实时展示各执行计划的运行日志以及运行结果。图6c示出了界面的运行日志视窗的另一示意图。如图6c所示,在待调试代码调试完成后,运行日志视窗可展示待调试代码整体的运行结果。从视窗的内容变化来看,在待调试代码调试完成后,运行日志视窗的内容可从图6b变化到图6c,并且界面可展示出图5a所示分析视窗,从而在分析视窗内通过PERT视图等性能视图,展示第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据。
在本申请实施例进一步的一些实施例中,数据引擎在得到服务端发送的执行计划(不限于第一执行计划还是第二执行计划)后,也可预测执行计划的整体性能开销数据(预测执行计划的整体性能开销数据,并不实际运行执行计划,而是例如通过分析执行计划中存在的各个引擎算子,来预测执行计划的整体性能开销数据)。由于预测执行计划的整体性能开销数据,并不实际运行执行计划,因此预测的执行计划的整体性能开销数据中不包含引擎算子角度的性能开销数据。针对预测的执行计划的整体性能开销数据,本申请实施例也可支持通过DAG (Directed Acyclic Graph,有向无环图)点线图进行展示。当然,在实际运行执行计划前,提供预测的执行计划的整体性能开销数据仅是一种可选手段。
在本申请实施例进一步的一些实施例中,用户端还可提供直译、预编译、编译的接口,以便用户对代码进行直译、预编译、编译。下面将分别进行说明。
直译是指利用直译器检查代码是否语法正确。用户端可在界面(例如代码开发、编辑界面)提供直译按钮,当用户选择待直译的代码并点击直译按钮后,用户端可向服务端发送携带该待直译的代码的直译请求。从而服务端可通过直译器分析该待直译的代码是否语法正确,将直译结果反馈给用户端。该待直译的代码可以是用户编辑完成的代码文档,也可以是用户从代码文档中选择的部分代码内容。
预编译是指检查代码是否有语法错误、引用错误、无法执行等错误情况。预编译的检查结果比直译更全面、准确,但耗时更长。用户端可在界面提供预编译按钮,当用户选择待预编译的代码并点击预编译按钮后,用户端可向服务端发送携带该待预编译的代码的预编译请求。从而服务端可通过编译器解析该待预编译的代码,得出待预编译的代码是否有语法错误、引用错误、无法执行等错误的预编译结果,并将预编译结果反馈给用户端。该待预编译的代码可以是用户编辑完成的代码文档,也可以是用户从代码文档中选择的部分代码内容。
编译是指经过编译器,将代码转换成数据引擎可运行的执行计划。用户端可在界面提供编译按钮,当用户选择待编译的代码并点击编译按钮后,用户端可向服务端发送携带该待编译的代码的编译请求。从而服务端可通过编译器将待编译的代码,解析成一个或多个执行计划。编译器解析得到执行计划的过程可参照前文相应部分的描述。针对产生的执行计划,本申请实施例可支持预测执行计划的整体性能开销数据,并反馈给用户端。
在本申请实施例进一步的一些实施例中,本申请实施例还可支持代码运行功能。用户端的界面可提供运行按钮(如图3a所示运行按钮),当用户选择待运行的代码并点击运行按钮后,用户端可向服务端发送代码运行请求,该代码运行请求可携带待运行的代码。从而服务端可通过编译器将待运行的代码,解析成一个或多个执行计划并提交给数据引擎。进而数据引擎可运行该一个或多个执行计划,并将运行结果通过服务端反馈给用户端。用户端可通过运行日志视窗,展示该待运行的代码对应的运行结果。运行日志视窗展示的内容可结合图6b和图6c所示。
在本申请实施例进一步的一些实施例中,本申请实施例还可支持运行日志剖析功能。数据引擎可分析代码的运行日志,产生分析结果对应的分析链接。数据引擎可将该分析链接通过服务端反馈给用户端。用户端可在运行日志视窗中,展示该分析链接。如果用户点击该分析链接,则用户端可跳转到该分析链接对应的分析结果。进一步,本申请实施例也可支持对代码的运行过程进行回放,例如回放代码的运行日志等。
需要说明的是,本申请实施例可能对待调试代码进行多次调试,用户端针对待调试代码的一次调试,可在界面相应展示一个分析视窗。图6d展示了多个分析视窗的示意图。如图6d所示,界面展示有分析1视窗和分析2视窗,分析1视窗中的内容可对应待调试代码的第一次调试,分析2视窗中的内容可对应待调试代码的第二次调试。在界面展示多个视窗(例如多个分析视窗以及运行日志视窗等)的情况下,用户端涉及到视窗之间的切换。基于此,为便于在多个分析视窗之间进行切换,本申请实施例还提供视窗之间的切换逻辑。用户可在多个视窗之间手动切换,也可由用户端实现在多个视窗之间自动切换。
在切换(无论是用户手动切换还是用户端自动切换)视窗时,用户端可确定当前切换到的目标视窗的视窗类型(例如视窗类型是分析视窗、还是运行日志视窗,还是其他类型的视窗)。如果目标视窗的视窗类型与用户端上一次打开的视窗的类型均是分析视窗,则判断分析视窗的性能视图实例是否已生成。若分析视窗的性能视图实例已生成,则加载性能视图实例,去除所述性能视图实例的原有数据,根据最新的第一执行计划的性能开销数据,在去除原有数据的性能视图实例的基础上,渲染得到性能视图(该性能视图可根据缩放比例值进行缩放和内容的重新渲染)。若分析视窗的性能视图实例未生成,则生成新的性能视图实例,根据最新的第一执行计划的性能开销数据,在新的性能视图实例的基础上,渲染得到性能视图。
在进一步的一些实施例中,本申请实施例也可支持对多个待调试代码进行调试。在多个待调试代码进行调试后,本申请实施例可比对多个待调试代码的性能开销数据,以便用户了解不同待调试代码之间的性能开销差异。图6e示出了界面比对多个待调试代码的性能开销数据的示意图。如图6e所示,以比对2个待调试代码的性能开销为例,界面可展示待调试代码1的性能开销数据,待调试代码2的性能开销数据(例如通过文字描述的方式,展示待调试代码1和待调试代码2的性能开销数据),以及待调试代码1和待调试代码2的性能开销差异。
在一些实施例中,服务端和数据引擎可设置于云端。本申请实施例提供的代码调试方案可由用户端发起针对待调试代码的调试请求,从而待调试代码反馈到云端的服务端后,云端的服务端可通过相配合的数据引擎进行具体的调试过程,得到待调试代码的调试结果并反馈回用户端。在一些实施例中,该待调试代码的调试结果可以包括:待调试代码中第一代码段对应的第一执行计划的性能开销数据(从引擎算子的角度,展示了至少一个性能开销维度的性能开销数据)、第一执行计划的运行结果、以及待调试代码中第二代码段对应的第二执行计划的运行结果。当然,待调试代码中也可能不存在第二代码段,调试结果中的内容可相应调整。可见,本申请实施例仅需用户确定待调试代码并执行调试操作(例如点击运行分析按钮),则可由云端反馈回待调试代码的调试结果,并且该调试结果中可以携带引擎算子角度的性能开销数据。本申请实施例不需要用户自行通过设计API(应用程序编程接口)来从数据引擎获得引擎算子角度的性能开销数据,能够极为方便用户获得引擎算子角度的性能开销数据,具有极大的易用性。
在本申请实施例的一个应用示例中,本申请实施例提供的代码调试方案可用于数据开发平台。数据开发平台可用于代码等的开发、调试、运行、发布,和运维等。在本申请实施例中,该数据开发平台可以包括用户端以及服务端。针对用户在数据开发平台编辑的代码文档或者部分代码内容,可使用本申请实施例提供的代码调试方案进行调试,从而提供精细化的性能开销数据,方便用户快速定位到代码中的问题,提升编程质量。
在进一步的一些实施例中,本申请实施例也可提供多个供用户选择的数据引擎。作为一个示例,图6f示出了界面展示供选择的数据引擎的示意图。如图6f,界面可具有数据引擎选择框,用户可从数据引擎选择框中选择用于代码调试的一个或多个数据引擎。当用户选择多个数据引擎进行代码调试时,用户端可将待调试代码分别发送给各数据引擎进行调试。在一些实施例中,用户选择的多个数据引擎中具有支持提供引擎算子角度的性能开销数据的数据引擎,也可能具有不支持提供引擎算子角度的性能开销数据的数据引擎。为便于说明,本申请实施例将与服务端(例如图1所示服务端120)配合的数据引擎称为第一数据引擎,第一数据引擎可支持提供引擎算子角度的性能开销数据,而不同于第一数据引擎的数据引擎可称为第二数据引擎,第二数据引擎不支持提供引擎算子角度的性能开销数据。
在界面展示可供用户选择的多个数据引擎,并且用户从中选择数据引擎的情况下,用户端可确定出用户选择的数据引擎;用户端可向选择的数据引擎分别发送针对待调试代码的调试请求。如果用户选择的数据引擎中包括第一数据引擎和第二数据引擎,则用户端可获取到第一数据引擎针对所述待调试代码提供的第一调试结果,以及第二数据引擎针对所述待调试代码提供的第二调试结果。其中,第一调试结果包括所述第一执行计划的性能开销数据(即第一执行计划在引擎算子角度的性能开销数据),而第二调试结果不包含引擎算子角度的性能开销数据。用户端可在界面展示第一调试结果和第二调试结果。第一调试结果中包含引擎算子角度的性能开销数据,相应展示内容可参照前文相应部分的描述,第二调试结果中不包含引擎算子角度的性能开销数据,可通过文字描述的展示方式展示第二调试结果。从而用户从第一调试结果和第二调试结果的展示内容,就可了解到第一数据引擎和第二数据引擎在代码调试方面的能力,当用户具有引擎算子角度的性能开销数据的获取需求时,即可选择第一数据引擎来进行代码调试。
在进一步的一些实施例中,用户端还可比对第一调试结果和第二调试结果,并展示比对结果。例如比对第一数据引擎和第二数据引擎在提供性能开销数据层面的能力和差异等。在进一步的一些实施例中,展示的第一调试结果和第二调试结果也可涉及数据引擎使用的资源量。在一个示例中,第一数据引擎和第二数据引擎可归属于不同的云端服务提供商,通过上述的描述,可方便用户选择用于代码调试的云端服务提供商。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
下面对本申请实施例提供的服务端角度的代码调试装置进行介绍。下文描述的装置内容可以认为是服务端,为实现本申请实施例提供的代码调试方法所需设置的功能模块。
图7示出了本申请实施例提供的代码调试装置的框图。该代码调试装置可应用于服务端。如图7所示,该装置可以包括:
代码获取模块711,用于获取用户端发送的待调试代码,将所述待调试代码分割为至少一个代码段;
第一代码段确定模块712,用于确定所述至少一个代码段中用于数据引擎的标准数据操作的第一代码段;
计划解析模块713,用于为所述第一代码段添加设定标识,将添加所述设定标识的第一代码段解析为第一执行计划;所述设定标识用于指示数据引擎需针对第一执行计划提供引擎算子角度的性能开销数据;
提交模块714,用于将所述第一执行计划提交给数据引擎;
数据获取模块715,用于获取数据引擎反馈的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:第一执行计划的运行过程中,第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;
数据发送模块716,用于将所述第一执行计划的性能开销数据发送给用户端。
在一些实施例中,第一代码段确定模块712,用于确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段包括:
针对所述待调试代码中的任一个代码段,确定所述代码段对应的语言类型,若所述代码段对应的语言类型为数据引擎的标准语言类型,确定所述代码段为所述第一代码段。
在进一步的一些实施例中,该装置还可进一步设置一个或多个功能模块(一个功能模块可实现如下一个功能,或者,一个功能模块可实现如下多个功能,不同功能模块之间的功能也可交叉),以实现如下功能:
获取数据引擎反馈的第一执行计划的运行结果并发送给用户端;
和/或,将所述待调试代码中的第二代码段解析为第二执行计划,所述第二代码段为所述待调试代码中不同于第一代码段的代码段,将所述第二执行计划提交给数据引擎,获取数据引擎反馈的第二执行计划的运行结果并发送给用户端。
在进一步的一些实施例中,该装置还可进一步设置一个或多个功能模块,以实现如下功能:
获取数据引擎反馈的待调试代码的性能开销问题对应的建议数据以及帮助文档链接,并发送给用户端,其中,数据引擎的专家库中记录有代码的各种性能开销问题对应的建议数据和帮助文档链接;
和/或,获取数据引擎反馈的第一执行计划中引擎算子的性能开销问题对应的建议数据以及帮助文档链接,并发送给用户端,其中,数据引擎的专家库中记录有引擎算子的各种性能开销问题对应的建议数据和帮助文档链接;
和/或,获取数据引擎在运行各执行计划时,实时反馈的各执行计划的运行日志以及运行结果,并实时发送给用户端;
和/或,获取数据引擎在待调试代码调试完成后,反馈的待调试代码整体的运行结果,并发送给用户端;
和/或,获取用户端发送的待直译的代码,利用直译器分析所述待直译的代码是否语法正确,得到直译结果并发送给用户端;
和/或,获取用户端发送的待预编译的代码,利用编译器解析所述待预编译的代码,得出所述待预编译的代码的预编译结果并发送给用户端;
和/或,获取用户端发送的待编译的代码,利用编译器将所述待编译的代码解析成一个或多个执行计划;
和/或,获取用户端发送的待运行的代码,利用编译器将所述待运行的代码解析成一个或多个执行计划,将该一个或多个执行计划提交给数据引擎,获取数据引擎反馈的该一个或多个执行计划的运行结果并发送给用户端;
和/或,获取数据引擎分析代码的运行日志之后,所述数据引擎发送的分析结果对应的分析链接,将所分析链接发送给用户端。
本申请实施例还提供一种服务端,该服务端可通过装载上述服务端角度描述的代码调试装置,以实现本申请实施例提供的代码调试方法。在可选实现中,图8示出了服务端的可选架构图。如图8所示,该服务端可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4。
在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信。
可选的,通信接口2可以为用于进行网络通信的通信模块的接口。
可选的,处理器1可能是CPU(中央处理器),GPU(Graphics Processing Unit,图形处理器),NPU(嵌入式神经网络处理器),FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列),TPU(张量处理单元),AI芯片,特定集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路等。
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,存储器3存储一条或多条计算机可执行指令,处理器1调用所述一条或多条计算机可执行指令,以执行本申请实施例提供的服务端执行的代码调试方法。
本申请实施例还提供一种存储介质,该存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令被执行时,实现本申请实施例提供的服务端执行的代码调试方法。
下面对本申请实施例提供的用户端角度的代码调试装置进行介绍。下文描述的装置内容可以认为是用户端,为实现本申请实施例提供的代码调试方法所需设置的功能模块。
图9示出了本申请实施例提供的代码调试装置的另一框图。该代码调试装置可应用于用户端。如图9所示,该装置可以包括:
调试请求模块911,用于响应于用户对待调试代码的调试操作,向服务端发送调试请求,所述调试请求携带待调试代码;
性能开销数据获取模块912,用于获取服务端发送的所述待调试代码中第一代码段对应的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:数据引擎在运行第一执行计划的过程中,记录的各引擎算子分别在至少一个性能开销维度的性能开销数据;所述第一代码段为所述待调试代码中用于数据引擎的标准数据操作的代码段;
性能开销数据展示模块913,用于通过性能视图展示所述第一执行计划的性能开销数据。
在一些实施例中,性能开销数据展示模块913,用于通过性能视图展示所述第一执行计划的性能开销数据包括:
在界面展示分析视窗,在分析视窗内显示性能视图;
通过性能视图展示第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;其中,所述性能视图包括第一执行计划的各引擎算子的性能开销展示框,一个性能开销展示框用于展示一个引擎算子的概要性能开销数据。
在一些实施例中,所述分析视窗还包括用于选择性能开销维度的性能开销维度选框;性能开销数据展示模块913,用于通过性能视图展示第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据包括:
基于所述性能开销维度选框中当前选择的性能开销维度,在性能视图中的各引擎算子的性能开销展示框,展示各引擎算子在当前选择的性能开销维度上的概要性能开销数据。
在进一步的一些实施例中,该装置还可进一步设置功能模块,以实现如下功能:
基于当前选择的引擎算子,在分析视窗展示当前选择的引擎算子的详细性能开销数据展示区,所述详细性能开销数据展示区中展示有当前选择的引擎算子的描述,以及在至少一个性能开销维度的详细性能开销数据;其中,当前选择的引擎算子与性能视图中被选中的性能开销展示框相对应,或者为分析视窗的引擎算子选择框中选择的引擎算子。
在进一步的一些实施例中,该装置还可进一步设置一个或多个功能模块(一个功能模块可实现如下一个功能,或者,一个功能模块可实现如下多个功能,不同功能模块之间的功能也可交叉),以实现如下功能:
根据引擎算子在当前选择的性能开销维度的开销量,展示引擎算子的性能开销展示框相应的颜色;
和/或,根据性能视图的缩放操作,确定性能视图的缩放比例值,根据该缩放比例值,对性能视图中的内容进行重新渲染;
和/或,获取待调试代码的性能开销问题对应的建议数据以及帮助文档链接,并进行展示;
和/或,获取第一执行计划的引擎算子的性能开销问题对应的建议数据以及帮助文档链接,并在引擎算子的详细性能开销数据展示区进行展示;
和/或,在待调试代码进行调试的过程中,获取各执行计划实时的运行日志以及运行结果,并在界面的运行日志视窗中实时的展示;
和/或,在待调试代码调试完成后,获取待调试代码整体的运行结果并在运行日志视窗展示;
和/或,向服务端发送待直译的代码,获取服务端发送的所述待直译的代码的直译结果;
和/或,向服务端发送待预编译的代码,获取服务端发送的所述待预编译的代码的预编译结果;
和/或,向服务端发送待编译的代码,以便服务端将待编译的代码,解析成一个或多个执行计划;
和/或,向服务端发送待运行的代码,获取服务端发送的所述待运行的代码解析成的执行计划的运行结果,并在运行日志视窗进行展示;
和/或,获取数据引擎分析代码的运行日志之后,产生的分析结果对应的分析链接,在运行日志视窗展示所述分析链接。
在进一步的一些实施例中,该装置还可进一步设置功能模块,以实现如下功能:
确定当前切换到的目标视窗的视窗类型,所述视窗类型包括分析视窗和运行日志视窗;
如果目标视窗的视窗类型与用户端上一次打开的视窗的类型均是分析视窗,判断分析视窗的性能视图实例是否已生成;
若是,加载性能视图实例,去除所述性能视图实例的原有数据,根据第一执行计划的性能开销数据,在去除原有数据的性能视图实例的基础上,渲染得到性能视图;
若否,生成新的性能视图实例,根据第一执行计划的性能开销数据,在新的性能视图实例的基础上,渲染得到性能视图。
在进一步的一些实施例中,该装置还可进一步设置功能模块,以实现如下功能:
在界面展示可供用户选择的多个数据引擎;
确定用户在所述多个数据引擎中选择的数据引擎,所述用户选择的数据引擎至少包括第一数据引擎和第二数据引擎,其中,所述第一数据引擎为与所述服务端配合的数据引擎,所述第一数据引擎针对所述待调试代码提供的第一调试结果包括所述第一执行计划的性能开销数据,所述第二数据引擎不同于第一数据引擎;
获取第二数据引擎针对所述待调试代码的第二调试结果;
在所述界面展示和/或比对第一调试结果和第二调试结果。
本申请实施例还提供一种用户端,该用户端可通过装载上述用户端角度描述的代码调试装置,以实现本申请实施例提供的代码调试方法。该用户端可运行在用户设备。本申请实施例还提供一种用户设备,该用户设备可运行有用户端。该用户设备的结构可结合图8所示,包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行本申请实施例提供的用户端执行的代码调试方法。
本申请实施例还提供一种存储介质,该存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令被执行时,实现如本申请实施例提供的用户端执行的代码调试方法。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (14)
1.一种代码调试方法,其中,所述方法应用于服务端,所述方法包括:
获取用户端发送的待调试代码;
确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段;
为所述第一代码段添加设定标识,将添加所述设定标识的第一代码段解析为第一执行计划;所述设定标识用于指示数据引擎需针对第一执行计划提供引擎算子角度的性能开销数据;
将所述第一执行计划提交给数据引擎;
获取数据引擎反馈的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:第一执行计划的运行过程中,第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;
将所述第一执行计划的性能开销数据发送给用户端。
2.根据权利要求1所述的方法,其中,所述确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段包括:
针对所述待调试代码中的任一个代码段,确定所述代码段对应的语言类型,若所述代码段对应的语言类型为数据引擎的标准语言类型,确定所述代码段为所述第一代码段。
3.根据权利要求1或2所述的方法,其中,所述方法还包括:
获取数据引擎反馈的第一执行计划的运行结果并发送给用户端;
和/或,将所述待调试代码中的第二代码段解析为第二执行计划,所述第二代码段为所述待调试代码中不同于第一代码段的代码段,将所述第二执行计划提交给数据引擎,获取数据引擎反馈的第二执行计划的运行结果并发送给用户端。
4.根据权利要求1或2所述的方法,其中,所述方法还包括:
获取数据引擎反馈的待调试代码的性能开销问题对应的建议数据以及帮助文档链接,并发送给用户端,其中,数据引擎的专家库中记录有代码的各种性能开销问题对应的建议数据和帮助文档链接;
和/或,获取数据引擎反馈的第一执行计划中引擎算子的性能开销问题对应的建议数据以及帮助文档链接,并发送给用户端,其中,数据引擎的专家库中记录有引擎算子的各种性能开销问题对应的建议数据和帮助文档链接;
和/或,获取数据引擎在运行各执行计划时,实时反馈的各执行计划的运行日志以及运行结果,并实时发送给用户端;
和/或,获取数据引擎在待调试代码调试完成后,反馈的待调试代码整体的运行结果,并发送给用户端;
和/或,获取用户端发送的待直译的代码,利用直译器分析所述待直译的代码是否语法正确,得到直译结果并发送给用户端;
和/或,获取用户端发送的待预编译的代码,利用编译器解析所述待预编译的代码,得出所述待预编译的代码的预编译结果并发送给用户端;
和/或,获取用户端发送的待编译的代码,利用编译器将所述待编译的代码解析成一个或多个执行计划;
和/或,获取用户端发送的待运行的代码,利用编译器将所述待运行的代码解析成一个或多个执行计划,将该一个或多个执行计划提交给数据引擎,获取数据引擎反馈的该一个或多个执行计划的运行结果并发送给用户端;
和/或,获取数据引擎分析代码的运行日志之后,所述数据引擎发送的分析结果对应的分析链接,将所分析链接发送给用户端。
5.一种代码调试方法,其中,所述方法应用于用户端,所述方法包括:
响应于用户对待调试代码的调试操作,向服务端发送调试请求,所述调试请求携带待调试代码;
获取服务端发送的所述待调试代码中第一代码段对应的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:数据引擎在运行第一执行计划的过程中,记录的各引擎算子分别在至少一个性能开销维度的性能开销数据;所述第一代码段为所述待调试代码中用于数据引擎的标准数据操作的代码段;
通过性能视图展示所述第一执行计划的性能开销数据。
6.根据权利要求5所述的方法,所述通过性能视图展示所述第一执行计划的性能开销数据包括:
在界面展示分析视窗,在分析视窗内显示性能视图;
通过性能视图展示第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;其中,所述性能视图包括第一执行计划的各引擎算子的性能开销展示框,一个性能开销展示框用于展示一个引擎算子的概要性能开销数据。
7.根据权利要求6所述的方法,所述分析视窗还包括用于选择性能开销维度的性能开销维度选框;所述通过性能视图展示第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据包括:
基于所述性能开销维度选框中当前选择的性能开销维度,在性能视图中的各引擎算子的性能开销展示框,展示各引擎算子在当前选择的性能开销维度上的概要性能开销数据;
所述方法还包括:
基于当前选择的引擎算子,在分析视窗展示当前选择的引擎算子的详细性能开销数据展示区,所述详细性能开销数据展示区中展示有当前选择的引擎算子的描述,以及在至少一个性能开销维度的详细性能开销数据;其中,当前选择的引擎算子与性能视图中被选中的性能开销展示框相对应,或者为分析视窗的引擎算子选择框中选择的引擎算子。
8.根据权利要求7所述的方法,其中,所述方法还包括:
根据引擎算子在当前选择的性能开销维度的开销量,展示引擎算子的性能开销展示框相应的颜色;
和/或,根据性能视图的缩放操作,确定性能视图的缩放比例值,根据该缩放比例值,对性能视图中的内容进行重新渲染;
和/或,获取待调试代码的性能开销问题对应的建议数据以及帮助文档链接,并进行展示;
和/或,获取第一执行计划的引擎算子的性能开销问题对应的建议数据以及帮助文档链接,并在引擎算子的详细性能开销数据展示区进行展示;
和/或,在待调试代码进行调试的过程中,获取各执行计划实时的运行日志以及运行结果,并在界面的运行日志视窗中实时的展示;
和/或,在待调试代码调试完成后,获取待调试代码整体的运行结果并在运行日志视窗展示;
和/或,向服务端发送待直译的代码,获取服务端发送的所述待直译的代码的直译结果;
和/或,向服务端发送待预编译的代码,获取服务端发送的所述待预编译的代码的预编译结果;
和/或,向服务端发送待编译的代码,以便服务端将所述待编译的代码,解析成一个或多个执行计划;
和/或,向服务端发送待运行的代码,获取服务端发送的所述待运行的代码解析成的执行计划的运行结果,并在运行日志视窗进行展示;
和/或,获取数据引擎分析代码的运行日志之后,产生的分析结果对应的分析链接,在运行日志视窗展示所述分析链接;
和/或,确定当前切换到的目标视窗的视窗类型,所述视窗类型包括分析视窗和运行日志视窗;如果目标视窗的视窗类型与用户端上一次打开的视窗的类型均是分析视窗,判断分析视窗的性能视图实例是否已生成;若是,加载性能视图实例,去除所述性能视图实例的原有数据,根据第一执行计划的性能开销数据,在去除原有数据的性能视图实例的基础上,渲染得到性能视图;若否,生成新的性能视图实例,根据第一执行计划的性能开销数据,在新的性能视图实例的基础上,渲染得到性能视图。
9.根据权利要求5所述的方法,其中,所述方法还包括:
在界面展示可供用户选择的多个数据引擎;
确定用户在所述多个数据引擎中选择的数据引擎,所述用户选择的数据引擎至少包括第一数据引擎和第二数据引擎,其中,所述第一数据引擎为与所述服务端配合的数据引擎,所述第一数据引擎针对所述待调试代码提供的第一调试结果包括所述第一执行计划的性能开销数据,所述第二数据引擎不同于第一数据引擎;
获取第二数据引擎针对所述待调试代码的第二调试结果;
在所述界面展示和/或比对第一调试结果和第二调试结果。
10.一种代码调试装置,其中,所述装置应用于服务端,所述装置包括:
代码获取模块,用于获取用户端发送的待调试代码;
第一代码段确定模块,用于确定所述待调试代码中用于数据引擎的标准数据操作的第一代码段;
计划解析模块,用于为所述第一代码段添加设定标识,将添加所述设定标识的第一代码段解析为第一执行计划;所述设定标识用于指示数据引擎需针对第一执行计划提供引擎算子角度的性能开销数据;
提交模块,用于将所述第一执行计划提交给数据引擎;
数据获取模块,用于获取数据引擎反馈的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:第一执行计划的运行过程中,第一执行计划的各引擎算子分别在至少一个性能开销维度的性能开销数据;
数据发送模块,用于将所述第一执行计划的性能开销数据发送给用户端。
11.一种代码调试装置,其中,所述装置应用于用户端,所述装置包括:
调试请求模块,用于响应于用户对待调试代码的调试操作,向服务端发送调试请求,所述调试请求携带待调试代码;
性能开销数据获取模块,用于获取服务端发送的所述待调试代码中第一代码段对应的第一执行计划的性能开销数据,所述第一执行计划的性能开销数据包括:数据引擎在运行第一执行计划的过程中,记录的各引擎算子分别在至少一个性能开销维度的性能开销数据;所述第一代码段为所述待调试代码中用于数据引擎的标准数据操作的代码段;
性能开销数据展示模块,用于通过性能视图展示所述第一执行计划的性能开销数据。
12.一种服务端,其中,所述服务端包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行如权利要求1-4任一项所述的代码调试方法。
13.一种用户设备,其中,所述用户设备运行有用户端,所述用户设备包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行如权利要求5-9任一项所述的代码调试方法。
14.一种存储介质,其中,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令被执行时,实现如权利要求1-4任一项所述的代码调试方法,或者,如权利要求5-9任一项所述的代码调试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495537.XA CN113064838B (zh) | 2021-05-07 | 2021-05-07 | 一种代码调试方法、装置、用户设备、服务端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495537.XA CN113064838B (zh) | 2021-05-07 | 2021-05-07 | 一种代码调试方法、装置、用户设备、服务端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113064838A true CN113064838A (zh) | 2021-07-02 |
CN113064838B CN113064838B (zh) | 2021-08-13 |
Family
ID=76568372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110495537.XA Active CN113064838B (zh) | 2021-05-07 | 2021-05-07 | 一种代码调试方法、装置、用户设备、服务端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113064838B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849418A (zh) * | 2021-11-30 | 2021-12-28 | 阿里云计算有限公司 | 代码质量调试方法、服务器、用户设备及存储介质 |
CN116185882A (zh) * | 2023-04-28 | 2023-05-30 | 深圳鸿芯微纳技术有限公司 | 软件调试方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102362276A (zh) * | 2009-04-01 | 2012-02-22 | 赛贝斯股份有限公司 | 测试数据库查询引擎的效率和稳定性 |
CN105447051A (zh) * | 2014-09-22 | 2016-03-30 | 普天信息技术有限公司 | 一种数据库操作的方法和装置 |
CN110443059A (zh) * | 2018-05-02 | 2019-11-12 | 中兴通讯股份有限公司 | 数据保护方法及装置 |
CN112579626A (zh) * | 2020-09-28 | 2021-03-30 | 京信数据科技有限公司 | 多源异构sql查询引擎的构建方法及装置 |
-
2021
- 2021-05-07 CN CN202110495537.XA patent/CN113064838B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102362276A (zh) * | 2009-04-01 | 2012-02-22 | 赛贝斯股份有限公司 | 测试数据库查询引擎的效率和稳定性 |
CN105447051A (zh) * | 2014-09-22 | 2016-03-30 | 普天信息技术有限公司 | 一种数据库操作的方法和装置 |
CN110443059A (zh) * | 2018-05-02 | 2019-11-12 | 中兴通讯股份有限公司 | 数据保护方法及装置 |
CN112579626A (zh) * | 2020-09-28 | 2021-03-30 | 京信数据科技有限公司 | 多源异构sql查询引擎的构建方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849418A (zh) * | 2021-11-30 | 2021-12-28 | 阿里云计算有限公司 | 代码质量调试方法、服务器、用户设备及存储介质 |
CN116185882A (zh) * | 2023-04-28 | 2023-05-30 | 深圳鸿芯微纳技术有限公司 | 软件调试方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113064838B (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983760B2 (en) | Source code generation from web-sourced snippets | |
US8126930B2 (en) | Micro-bucket testing for page optimization | |
US7966170B2 (en) | Computer program product and computer system for language-enhanced programming tools | |
US5809248A (en) | Method and apparatus for front end navigator and network architecture for performing functions on distributed files in a computer network | |
CN113064838B (zh) | 一种代码调试方法、装置、用户设备、服务端及存储介质 | |
US20040221262A1 (en) | Processing macro information and displaying via GUI in different tools | |
CN110580189A (zh) | 生成前端页面的方法、装置、计算机设备以及存储介质 | |
CN112817876B (zh) | 一种代码诊断方法、装置、服务端、用户设备及存储介质 | |
CN109710250B (zh) | 一种用于构建用户界面的可视化引擎系统及方法 | |
CN111831384A (zh) | 语言切换方法和装置、设备及存储介质 | |
CN113946366A (zh) | 代码分析的方法、系统及计算设备 | |
CN116911588A (zh) | 业务流程执行方法、装置、设备及存储介质 | |
CN109240700B (zh) | 关键代码定位方法与系统 | |
CN112269774A (zh) | 异构数据库应用代码适配评估装置、方法及存储介质 | |
CN109636619B (zh) | 量化平台的回测方法、装置、电子设备和可读介质 | |
CN116719735A (zh) | 一种测试用例生成方法及装置 | |
JP2024503885A (ja) | ユーザー定義の評価エンジンを統合した多面的なサイト評価ツール | |
CN113849418B (zh) | 代码质量调试方法、服务器、用户设备及存储介质 | |
CN114328572A (zh) | 基于sql解析器的数据查询方法、装置、系统及介质 | |
CN113934412A (zh) | 程序生成方法、装置、设备及存储介质 | |
WO2024082983A1 (zh) | 一种代码推荐方法、装置及相关设备 | |
JP2004038827A (ja) | 情報抽出方法、情報抽出装置および情報抽出プログラム | |
CN113961192A (zh) | 代码数据的处理方法、装置及电子设备 | |
CN117453538A (zh) | 一种网页测试平台、方法及计算机设备 | |
CN115185513A (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 |