首页> 中国专利> 程序调试方法、装置、设备及计算机可读存储介质

程序调试方法、装置、设备及计算机可读存储介质

摘要

本申请实施例提供了一种程序调试方法、装置、设备及计算机可读存储介质,其中方法包括:管理平台接收客户端发送的调试请求,其中所述调试请求包括待调试程序的标识;根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件;解析所述IDL文件,得到所述待调试程序的出入参信息;对所述出入参信息进行编码,形成具有所述出入参信息的调试指令;将所述调试指令发送给所述服务器,以使得所述服务器基于所述出入参信息对所述待调试程序进行调试。通过本申请,能够降低程序调试的复杂度,提高了程序调试的效率。

著录项

  • 公开/公告号CN112783748A

    专利类型发明专利

  • 公开/公告日2021-05-11

    原文格式PDF

  • 申请/专利权人 腾讯科技(深圳)有限公司;

    申请/专利号CN201911076001.3

  • 申请日2019-11-06

  • 分类号G06F11/36(20060101);

  • 代理机构11270 北京派特恩知识产权代理有限公司;

  • 代理人崔晓岚;张颖玲

  • 地址 518000 广东省深圳市南山区高新区科技中一路腾讯大厦35层

  • 入库时间 2023-06-19 10:57:17

说明书

技术领域

本申请实施例涉及互联网技术领域,涉及但不限于一种程序调试方法、装置、设备及计算机可读存储介质。

背景技术

目前,在分布式系统中,当服务器端的程序发生改动时,与服务器对应的客户端需要获取到该程序,并对程序进行编译,根据编译后的文件得到客户端的服务,在客户端的服务写好之后,根据写好的服务在客户端部署程序,并对该程序进行调试,如果在调试的过程中出现问题的话,需要对客户端的服务进行修改,修改后的服务还需要重新进行编译和发布,整个过程比较复杂且耗时。

发明内容

本申请实施例提供一种程序调试方法、装置、设备及计算机可读存储介质,能够降低程序调试的复杂度,提高程序调试的效率。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种程序调试方法,包括:

管理平台接收客户端发送的调试请求,其中所述调试请求包括待调试程序的标识;

根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件;

解析所述IDL文件,得到所述待调试程序的出入参信息;

对所述出入参信息进行编码,形成具有所述出入参信息的调试指令;

将所述调试指令发送给所述服务器,以使得所述服务器基于所述出入参信息对所述待调试程序进行调试。

本申请实施例提供一种程序调试装置,包括:

接收模块,用于接收客户端发送的调试请求,其中所述调试请求包括待调试程序的标识;

请求模块,用于根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件;

解析模块,用于解析所述IDL文件,得到所述待调试程序的出入参信息;

编码模块,用于对所述出入参信息进行编码,形成具有所述出入参信息的调试指令;

发送模块,用于将所述调试指令发送给所述服务器,以使得服务器基于所述出入参信息对所述待调试程序进行调试。

本申请实施例提供一种程序调试设备,包括:

存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述的方法。

本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。

本申请实施例具有以下有益效果:管理平台通过对获取的待调试程序的IDL文件进行解析,得到待调试程序的出入参信息,并对出入参信息进行编码得到调试指令,向服务器发送调试指令以指示服务器基于调试指令中的出入参信息对待调试程序进行调试。如此,由于通过第三方的管理平台解析IDL文件得到出入参信息,无需运行待调试程序,也无需对获取到的IDL文件进行编译,因此降低了程序调试的复杂度,提高了程序调试的效率。

附图说明

图1是本申请实施例提供的程序调试系统的一个可选的架构示意图;

图2是本申请实施例提供的管理终端的结构示意图;

图3是本申请实施例提供的程序调试方法的一个可选的流程示意图;

图4是本申请实施例提供的程序调试方法的一个可选的流程示意图;

图5是本申请实施例提供的程序调试方法的一个可选的流程示意图;

图6是本申请实施例提供的程序调试方法的一个可选的流程示意图;

图7是本申请实施例提供的程序调试方法的一个可选的流程示意图;

图8是本申请实施例提供的程序调试方法的一个可选的流程示意图;

图9是相关技术中进行程序调试的实现流程示意图;

图10是本申请实施例中进行程序调试的实现流程示意图;

图11是相关技术中基于TARS协议的程序调用过程示意图;

图12是本申请实施例中基于管理平台的程序调用过程示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)接口描述语言(IDL,Interface description language),用来描述软件组件接口的一种计算机语言,通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流,是一个分布式系统间通信的必备技术。

2)分布式系统,是建立在网络之上的软件系统。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。

3)远程过程调用(RPC,Remote Procedure Call),是一个分布式系统间通信的必备技术,即一个节点请求另一个远程节点提供服务。

4)编译,利用编译程序从源语言编写的源程序产生目标程序的过程。在本申请中是指对于服务器开发的新服务对应的程序或者对于服务器所改动的程序,在客户端侧也需要写一个对应程序,在写所述对应程序时,服务器侧的程序为所述源程序,客户端侧的对应程序为所述目标程序,利用编译程序从服务器侧的源程序编写客户端侧的目标程序的过程即为所述编译过程。

为了更好地理解本申请实施例中提供的程序调试方法,首先对RPC技术做进一步分析说明:

RPC技术是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议的技术。其中,RPC协议假定某些传输协议的存在,例如,传输控制协议(TCP,Transmission Control Protocol)或用户数据报协议(UDP,User Datagram Protocol),为通信程序之间携带信息数据。在开放式系统互联(OSI,Open System Interconnection)网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式应用程序在内的应用程序更加容易,这里,分布式应用程序是指:应用程序分布在不同计算机上,通过网络来共同完成一项任务,通常为服务器/客户端模式。其中,请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

相关技术中,在进行程序调试时,例如对RPC程序,通常是在分布式系统中,当服务器端的程序发生改动时或者当服务器端发起一个新的RPC服务时,如果客户端想要去调试或者使用该RPC服务,则在客户端也需要写一个服务,然后,把该服务的IDL文件获取到,并进行编译,得到编译后的文件,然后根据编译后的文件去写客户端的服务。在客户端的服务写好之后,根据写好的服务在客户端部署程序,并对该程序进行调试,如果在调试的过程中出现问题的话,还需要对客户端的服务进行修改,并且修改后的服务还需要重新进行编译和发布。也就是说,相关技术中,服务器端对RPC程序的每一次改动,在客户端运行时,都需要客户端重新对对应的程序进行修改、编译、发布、IDL修改、再编译和发布等一系列的过程。显然,这一过程复杂且非常耗时,往往调试一次服务器端改动就需要花费几十分钟,且在调试的过程中容易出错。

基于相关技术所存在的至少一个问题,本申请实施例提供一种程序调试方法,通过在管理平台模拟客户端,并根据IDL文件转换来的对象来构造数据,通过所构造的数据访问服务端。由于没有了客户端,因此不需要线下编译IDL文件,能够使得调试一次服务器端的改动所花费的时间大大缩短,提高程序调试的效率。

下面说明本申请实施例提供的程序调试设备的示例性应用,本申请实施例提供的设备为用于管理至少一个客户端的管理平台,所述管理平台可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的能够运行程序的管理终端。下面,将说明设备实施为管理终端时的示例性应用。

参见图1,图1是本申请实施例提供的程序调试系统10的一个可选的架构示意图。为实现一个程序在客户端上的顺利运行,管理终端100通过网络200连接服务器300,并且,管理终端100通过网络与运行有客户端400-1的服务终端400连接,用于对服务终端400上的服务程序进行管理,网络200可以是广域网或者局域网,又或者是二者的组合。

管理终端100在当前页面110上显示服务器发送的待调试程序的IDL文件。本申请实施例中,管理终端100可以接收客户端400-1发送的调试请求,并基于该调试请求,获取服务器发送的待调试程序的IDL文件,解析所述IDL文件,得到所述待调试程序的出入参信息,对所述出入参信息进行编码,形成具有所述出入参信息的调试指令,将所述调试指令发送给所述服务器300,以使得所述服务器300基于所述出入参信息对所述待调试程序进行调试,服务器300可以将调试后得到的调试程序发送给服务终端400,以在服务终端400上运行所述调试程序以实现对应的服务。

参见图2,图2是本申请实施例提供的管理终端100的结构示意图,图2所示的管理终端100包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。管理终端100中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统340。

处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。

存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;

输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。

在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器350中的一种程序调试装置354,该程序调试装置354可以是管理终端100中的程序调试装置,其可以是程序和插件等形式的软件,包括以下软件模块:接收模块3541、请求模块3542、解析模块3543、编码模块3544和发送模块3545,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的程序调试方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。

下面将结合本申请实施例提供的管理终端100的示例性应用和实施,说明本申请实施例提供的程序调试方法。参见图3,图3是本申请实施例提供的程序调试方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。

步骤S401,管理平台接收客户端发送的调试请求。

这里,所述调试请求包括待调试程序的标识,所述调试请求用于请求对服务器的待调试程序进行调试。

本申请实施例中,当服务器的程序发生改动时或者当服务器发起一个新的服务时,如果客户端想要去使用该服务,则需要对该服务对应的程序进行调试,其中,该服务对应的程序即为所述待调试程序。本申请实施例中,在对待调试程序进行调试时,不需要客户端进行调试,客户端只需将调试请求发送给管理平台,通过该管理平台即可实现对待调试程序的调试。并且,由于本申请实施例中通过管理平台实现对待调试程序的调试,因此,在客户端就不用对待调试程序进行编译以形成能够在客户端运行的程序。

所述管理平台为线上平台,所述管理平台能够管理与所述服务器对应的全部服务终端,是统一管理IDL文件和待调试程序的平台,其中,在所述服务终端上部署有所述客户端。

举例来说,对于一即时通信APP,该即时通信APP的服务器与至少一个用户终端对应,每一用户终端上部署有该即时通信APP的客户端,并且,本申请实施例的方案中,还具有一用于管理全部用户终端上的即时通信APP客户端的管理平台。当即时通信APP发起一个新的即时通信服务时,例如,聊天时可以通过语音指令发红包的服务,那么首先需要开发人员在即时通信APP服务器上写好该服务对应的程序,并告知用户终端上的客户端,有这一新的服务,此时,客户端可以向管理平台发送所述调试请求,以请求管理平台对该服务对应的程序进行调试,进而实现在客户端上运行该服务对应的程序,以实现服务。

步骤S402,根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件。

这里,管理平台在接收到所述调试请求时,解析所述调试请求,得到所述调试请求中的待调试程序的标识,根据所述待调试程序的标识,向服务器发送请求消息,所述请求消息中包括所述待调试程序的标识,所述请求消息用于向服务器请求所述待调试程序对应的IDL文件。

本申请实施例中,管理平台可以直接从服务器获取所述待调试程序的IDL文件,所述IDL文件中包括所述服务器定义的通信协议、通信方法、通信参数、参数类型、服务参数、服务类型和通信模块等信息,所述IDL文件用于定义客户端与服务器之间的通信方式,所述IDL文件为实现所述服务的标准。

步骤S403,解析所述IDL文件,得到所述待调试程序的出入参信息。

这里,管理平台直接从所述IDL文件中解析出所述待调试程序的出入参信息,可以是管理平台首先解析所述IDL文件,得到所述IDL文件中的所述通信协议、通信方法、通信参数、参数类型、服务参数、服务类型和通信模块等信息,然后根据IDL文件中的这些信息构造所述出入参信息,将IDL文件中的所述通信协议、通信方法、通信参数、参数类型、服务参数、服务类型和通信模块等信息构造成方便易读的出入参信息,以便于管理平台侧的人员能够通过查阅出入参信息,快速方便的确定服务器端的待调试程序的参数,确定要调试的内容。

本申请实施例中,管理平台能够直接解析出IDL文件中的信息,并基于I DL文件中的信息构造出入参信息,而无需对IDL文件进行编译,将IDL文件首先编译成有详细出入参信息的代理类,之后再基于代理类确定出入参信息并实现后续的调试过程。显然,本申请实施例中通过管理平台直接解析IDL文件构造出入参信息的方法相对于相关技术中首先进行编译得到代理类,再基于代理类确定出入参信息的方案实现起来更加简洁。

步骤S404,对所述出入参信息进行编码,形成具有所述出入参信息的调试指令。

这里,由于所述出入参信息包括用于指示对服务器端的待调试程序进行调试的调试参数,因此,在得到所述出入参信息之后,可以对所述出入参信息进行编码,对所述出入参信息进行格式转化,以形成包含有所述出入参信息的调试指令,其中,所述调试指令用于指示根据所述调试参数对服务器的待调试程序进行调试。

步骤S405,将所述调试指令发送给所述服务器,以使得所述服务器基于所述出入参信息对所述待调试程序进行调试。

这里,管理平台在编码得到所述调试指令之后,将所述调试指令发送给服务器,以使得服务器端的调试人员能够获取所述调试指令中的调试参数,并根据所述调试参数对所述待调试程序进行调试,得到调试后的程序,其中,调试后的程序能够有效的在客户端运行,并且能够正常实现所述服务对应的功能。

本申请实施例提供的程序调试方法,管理平台通过对获取的待调试程序的ID了文件进行解析,得到待调试程序的出入参信息,并对出入参信息进行编码得到调试指令,向服务器发送调试指令以指示服务器基于调试指令中的出入参信息对待调试程序进行调试。如此,由于通过第三方的管理平台解析IDL文件得到出入参信息,无需运行待调试程序,也无需对获取到的IDL文件进行编译,因此降低了程序调试的复杂度,提高了程序调试的效率。

参见图4,图4是本申请实施例提供的程序调试方法的一个可选的流程示意图,所述方法包括以下步骤:

步骤S501,客户端向管理平台发送调试请求。

这里,服务终端上的客户端在确定服务器的程序发生改动或者确定服务器发起一个新的服务时,客户端向管理平台发送调试请求,其中所述调试请求包括待调试程序的标识。所述待调试程序为所述服务器上发生改动的程序或者是服务器所发起的新服务对应的程序。

步骤S502,管理平台根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件。

这里,当管理平台接收到所述调试请求,并解析得到待调试程序的标识时,向服务器发送请求消息,所述请求消息中包括所述待调试程序的标识,通过所述请求消息请求服务器发送所述待调试程序的IDL文件。

步骤S503,服务器向管理平台发送所述待调试程序的IDL文件。

这里,服务器在接收到管理平台发送的请求消息之后,响应于所述请求消息,将所述待调试程序的IDL文件发送给管理平台,以使得管理平台能够基于接收到IDL文件实现对待调试程序的调试。

步骤S504,管理平台解析所述IDL文件,得到所述待调试程序的出入参信息。

这里,管理平台在获取到IDL文件之后,解析所述IDL文件,得到所述IDL文件中的信息,并基于IDL文件中的信息构造出入参信息,而无需对IDL文件进行编译。

本申请实施例中,管理平台在获取到IDL文件之后,并不需要对IDL文件进行编译以运行待调试程序,管理平台能够直接解析IDL文件,得到IDL文件中的信息。而对于客户端来说,在客户端获取到IDL文件之后,需要对IDL文件进行编译,然后运行编译后得到的程序,由此可见,本申请实施例的管理平台是与客户端所完全不同的平台,所述管理平台是服务器与客户端之间的第三方管理平台。

步骤S505,管理平台将所述出入参信息转换为具有JSON格式的出入参信息。

这里,可以将出入参信息转换为JS对象简谱(JSON,JavaScript ObjectNotation)格式,JS对象简谱是一种轻量级的数据交换格式,该格式采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

本申请实施例中,将出入参信息转换为JSON格式,如此能够方便用户阅读和编写,同时也便于管理平台对出入参信息进行解析,进一步提高程序调试的效率。

步骤S506,管理平台采用基于预设框架的数据流编码方式,对所述具有JSON格式的出入参信息进行编码,形成具有所述出入参信息的调试指令。

这里,采用基于预设框架的数据流编码方式对具有JSON格式的出入参信息进行编码,由于所述出入参信息用于指示对服务器端的待调试程序进行调试的调试参数,因此,在得到JSON格式的出入参信息之后,可以对JSON格式的出入参信息进行编码,以实现对JSON格式的出入参信息进行格式转化,形成包含有所述出入参信息的调试指令,其中,所述调试指令用于指示根据所述调试参数对服务器的待调试程序进行调试。

在一些实施例中,步骤S506可以通过以下步骤实现:

步骤S5061,采用基于TARS框架的数据流编码方式,在线上对所述具有JSON格式的出入参信息进行编码,形成具有所述出入参信息的调试指令。

这里,所述预设框架为TARS框架,TARS框架是一种基于名字服务使用TARS协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。TARS框架是将微服务架构的总应用程序框架(TAF,Total Application Framework)的实践成果总结而成的开源项目。TARS框架是一个兼顾易用性、高性能、服务治理的框架。TARS框架最底层的协议层的设计思路是将业务网络通信的协议进行统一,以IDL的方式,开发支持多平台、可扩展、协议代码自动生成的统一协议。在开发过程中,开发人员只需要关注通讯的协议字段的内容,不需要关注其实现的细节,大大减轻了开发服务时需要考虑的协议是否能跨平台使用、是否可能需要兼容、扩展等问题。

本申请实施例中,采用基于TARS框架的数据流编码方式,对所述具有JSON格式的出入参信息进行编码时,无需将出入参信息下载到本地,可以在线上直接对出入参信息进行编码,以形成具有所述出入参信息的调试指令,如此,能够极大的节省网络资源并提高编码的效率。

步骤S507,管理平台将所述调试指令发送给所述服务器。

步骤S508,服务器基于所述出入参信息对所述待调试程序进行调试。

这里,所述调试指令用于指示根据所述出入参信息对服务器的待调试程序进行调试,当服务器接收到所述调试指令时,根据所述调试指令中的出入参信息对所述待调试程序进行调试,以得到能够在客户端正常运行的调试后的调试程序。

步骤S509,服务器将调试后得到的调试程序发送给客户端。

步骤S510,客户端运行所述调试程序。

本申请实施例提供的程序调试方法,管理平台在接收到客户端发送的调试请求后,根据调试请求中的待调试程序的标识,从服务器获取待调试程序的IDL文件,解析所述IDL文件,得到所述待调试程序的出入参信息,然后对出入参信息进行编码得到调试指令,并将调试指令发送给服务器,以使得服务器基于调试指令对待调试程序进行调试,如此,由于通过第三方的管理平台直接解析IDL文件得到出入参信息,无需运行待调试程序,也无需对获取到的IDL文件进行编译,因此降低了程序调试的复杂度,提高了程序调试的效率。另外,出入参信息具有JSON格式,能够方便用户阅读和编写,同时也便于管理平台对出入参信息进行解析,进一步提高了程序调试的效率。

基于图4,图5是本申请实施例提供的程序调试方法的一个可选的流程示意图,如图5所示,在步骤S506形成具有所述出入参信息的调试指令之后,所述方法还包括以下步骤:

步骤S601,管理平台将所述调试指令存储于缓冲器中。

这里,所述缓冲器为所述管理平台的输出缓冲器,管理平台在得到所述调试指令后,可以先将所述调试指令存储在自身的输出缓冲器中,以避免如果服务器当前正忙或者正在处理其他业务时,直接将调试指令发送给服务器所造成的调试失败的情况。当服务器空闲时,会从缓冲器中主动获取调试指令。

步骤S602,服务器在空闲时从所述缓冲器中获取所述调试指令,并基于所述调试指令中的出入参信息对所述待调试程序进行调试。

这里,服务器至少包括以下状态中的任意之一:空闲状态和非空闲状态,当服务器处于非空闲状态时,对于新的调试指令,服务器不能立即进行响应,因此,可以将调试指令存储于缓冲器中;当服务器处于空闲状态时,对于新的调试指令,服务器可以进行响应,因此,当服务器在空闲时,即服务器当前处于空闲状态时,服务器可以从缓冲器中获取新的调试指令进行响应。

本申请实施例提供的程序调试方法,采用缓冲器缓存调试指令,当服务器处于空闲状态时可以从缓冲器中获取调试指令并进行响应,如此能够保证服务器对每一调试指令进行有效的响应,从而实现对待调试程序的正常调试,避免服务器忙时造成对新的调试指令的响应失败。

图6是本申请实施例提供的程序调试方法的一个可选的流程示意图,其中所述出入参信息包括所述待调试程序的调试参数,如图6所示,所述方法包括以下步骤:

步骤S701,管理平台接收客户端发送的调试请求,其中所述调试请求包括待调试程序的标识。

步骤S702,根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件。

步骤S703,解析所述IDL文件,得到所述待调试程序的出入参信息。

步骤S704,对出入参信息进行编码,形成具有所述出入参信息的调试指令。

这里,步骤S701至步骤S704与上述步骤S401至步骤S404相同,本申请实施例不再赘述。

步骤S705,将所述调试指令发送给所述服务器,以使得所述服务器基于所述调试参数对所述待调试程序进行调试。

这里,所述出入参信息包括所述待调试程序的调试参数,所述调试参数是对服务器端的待调试程序进行调试的参数,服务器可以根据所述调试参数对所述待调试程序进行调试。

图7是本申请实施例提供的程序调试方法的一个可选的流程示意图,其中所述出入参信息包括预定义的所述待调试程序的运行协议,如图7所示,所述方法包括以下步骤:

步骤S801,管理平台接收客户端发送的调试请求,其中所述调试请求包括待调试程序的标识。

步骤S802,根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件。

步骤S803,解析所述IDL文件,得到所述待调试程序的出入参信息。

步骤S804,对所述出入参信息进行编码,形成具有所述出入参信息的调试指令。

这里,步骤S801至步骤S804与上述步骤S401至步骤S404相同,本申请实施例不再赘述。

步骤S805,将所述调试指令发送给所述服务器,以使得所述服务器按照所述运行协议运行所述待调试程序。

这里,所述出入参信息包括预定义的所述待调试程序的运行协议,所述运行协议用于规定运行所述待调试程序时的运行方式。本申请实施例中,当服务器接收到调试指令后,解析所述调试指令得到所述运行协议,并基于所述运行协议运行所述待调试程序。

在其他实施例中,所述运行协议也可以用于规定客户端运行所述待调试程序时的运行方式,那么当服务器接收到所述调试指令之后,对所述待调试程序进行调试得到调试程序,并将调试程序和运行协议发送给客户端,客户端按照所述运行协议规定的运行方式运行所述调试程序。

图8是本申请实施例提供的程序调试方法的一个可选的流程示意图,其中所述待调试程序为RPC程序,如图8所示,所述方法包括以下步骤:

步骤S901,管理平台接收客户端发送的调试请求,其中所述调试请求包括RPC程序的标识。

步骤S902,根据所述RPC程序的标识,向服务器请求所述RPC程序的IDL文件。

步骤S903,解析所述IDL文件,得到所述RPC程序的出入参信息。

步骤S904,对所述出入参信息进行编码,形成具有所述出入参信息的调试指令。

这里,步骤S901至步骤S904与上述步骤S401至步骤S404对应,所不同的是,上述步骤S401至步骤S404中是对于待调试程序所执行的步骤,而步骤S901至步骤S904是对于RPC程序所执行的步骤。

步骤S905,采用RPC通信方式将所述调试指令发送给所述服务器,以使得所述服务器基于所述调试指令中的出入参信息对所述RPC程序进行调试。

这里,所述RPC程序为采用RPC技术实现的服务所对应的程序。本申请实施例中,对于RPC程序的通信,通常是采用RPC通信方式实现管理平台与服务器之间、管理平台与客户端之间、客户端与服务器之间的通信。

本申请实施例中,由于待调试的程序为RPC程序,因此,采用RPC通信方式将所述调试指令发送给所述服务器,服务器在接收到调试指令之后,根据调试指令中的出入参信息对所述RPC程序进行调试。

下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。

本申请实施例提供一种程序调试方法,通过管理平台模拟客户端以及将IDL文件转换为JSON对象来构造数据访问服务端,省略了需要进行重新编译、发布客户端、编译、发布IDL文件的大量时间,从而达到快速调试RPC程序的目的。

图9是相关技术中进行程序调试的实现流程示意图,如图9所示,相关技术中是编写一个客户端程序,通过IDL语言编译后的代理文件(即代理类)访问服务器端程序,方法包括以下步骤:

步骤S1001,在客户端编写客户端程序。

步骤S1002,对IDL文件进行编译,生成代理文件。

这里,当IDL文件发生更新时,所述方法还包括以下步骤:

步骤S1003,重新编译IDL文件。

步骤S1004,通过代理文件访问服务器端的程序。

那么,就不难得出,相关技术中对于服务器端的每一次改动,都需要客户端重新修改、编译、发布、IDL修改、编译、再发布。显然,这一过程非常耗时,往往调试一次改动需要花费几十分钟,且容易出错。

本申请实施例的程序调试方法,采用管理平台模拟客户端,通过IDL文件转换来的JSON对象来构造数据访问服务器端。由于没有了客户端,也不需要线下编译IDL文件,因此调试一次服务端改动所花的时间可以大大缩短。

图10是本申请实施例中进行程序调试的实现流程示意图,如图10所示,包括以下步骤:

步骤S1101,管理平台将获取到的IDL文件转换为JSON对象。

步骤S1102,通过JSON对象访问服务器端。

RPC程序的IDL文件一般都是支持手工解码的,本申请实施例通过按照IDL文件的要求将出入参信息手工解码,再将调用的接口与方法传给RPC协议,即可省略开发客户端和IDL文件在客户端编译的过程,从而实现快速调试RPC程序的目的。

下面将以TARS协议(一种RPC协议)为例详细描述这一过程:

图11是相关技术中基于TARS协议的程序调用过程示意图,如图11所示,对于IDL文件121(例如,可以为xxx.tars文件),传统方法中需要在客户端120先通过IDL文件编译工具122(例如,tars2node工具),将IDL文件121转换为有详细出入参信息(params)123的代理类(tarsProxy)124,然后所有的出入参信息都严格按照代理类的规定,通过基于TARS框架的数据流编码工具(tars-stream)125,将出入参信息编码成调试指令,存储于缓冲器(buffer)126中,来和服务器127进行RPC通信。但是,开发客户端和编译IDL文件都需要花费大量时间。

图12是本申请实施例中基于管理平台的程序调用过程示意图,其中,管理平台为统一管理IDL文件和RPC程序的平台。如图12所示,管理平台130直接从IDL文件中自动解析出模块、接口、方法等信息,并通过这些信息构造出入参信息131,本申请实施例中的出入参信息都使用JSON格式,方便易读。在构造出入参信息131之后,通过tars-stream工具132将出入参信息编码成调试指令,存储于缓冲器133中,来和服务器134进行RPC通信。与图11中的方案相比,本申请实施例的方法少了客户端这一需要开发实现的平台,以及在客户端编译IDL文件生成代理类的步骤,从而实现快速调试RPC程序,提高开发效率的目标。

本申请实施例中在管理平台对RPC程序进行调试时,管理平台会开发一个接口调试的功能,然后在这个功能里面,就可以直接根据服务器提供到的IDL文件中定义的方法、参数、模块这些信息,和服务器所开发的服务进行通信并调试,也就是说可以直接在管理平台上进行RPC程序的调试,根据服务器发送的IDL文件去模拟服务端通信。

在一些实施例中,管理平台还可以管理所有客户端的服务,例如有些服务需要部署在管理平台上,然后部署的时候就直接给这个服务提供这个接口调试的功能。

本申请实施例的程序调试方法还可以应用于以下场景:管理平台相当于一个网站,在网站的后台可以部署服务器端的服务,即服务器端的服务可以部署在管理平台上。对于相关技术中的方法,如果要调试这个服务,就需要写一些服务去调用它,而采用本申请实施例提供的方法,管理平台就可以直接提供了接口调试的功能,服务器端的这个服务部署在管理平台上,就可以直接在管理平台去对这个服务进行调试,不需要去写一个新的服务去调试。

本申请实施例提供的程序调试方法,一方面,解决了RPC程序调试过程中,由于服务器端对程序进行更新使得IDL文件需要重新编译,从而导致调试耗时长的问题,省略了客户端所以不需要线下编译IDL文件,大大缩短了调试一次服务端改动的耗时。另一方面,由于相关技术中一次服务器端的程序修改需要经历客户端重新修改、编译、发布、IDL修改、再编译、再发布这一复杂过程,而本申请实施例的方法省略了上述步骤,避免了上述步骤中潜在的出错机会,并进一步规避安全风险。

下面继续说明本申请实施例提供的程序调试装置354的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器350的程序调试装置354中的软件模块可以是管理终端100中的程序调试装置,包括:

接收模块3541,用于接收客户端发送的调试请求,其中所述调试请求包括待调试程序的标识;

请求模块3542,用于根据所述待调试程序的标识,向服务器请求所述待调试程序的IDL文件;

解析模块3543,用于解析所述IDL文件,得到所述待调试程序的出入参信息;

编码模块3544,用于对所述出入参信息进行编码,形成具有所述出入参信息的调试指令;

发送模块3545,用于将所述调试指令发送给所述服务器,以使得服务器基于所述出入参信息对所述待调试程序进行调试。

在一些实施例中,所述编码模块还用于:将所述出入参信息转换为具有JSON格式的出入参信息;采用基于预设框架的数据流编码方式,对所述具有JSON格式的出入参信息进行编码,形成具有所述出入参信息的调试指令。

在一些实施例中,所述编码模块还用于:采用基于TARS框架的数据流编码方式,在线上对所述具有JSON格式的出入参信息进行编码,形成具有所述出入参信息的调试指令。

在一些实施例中,所述装置还包括:存储模块,用于在形成所述调试指令之后,将所述调试指令存储于缓冲器中,以使得所述服务器在空闲时从所述缓冲器中获取所述调试指令,并基于所述调试指令中的出入参信息对所述待调试程序进行调试。

在一些实施例中,所述出入参信息包括所述待调试程序的调试参数;对应地,所述发送模块还用于:将所述调试指令发送给所述服务器,以使得所述服务器基于所述调试参数对所述待调试程序进行调试。

在一些实施例中,所述出入参信息包括预定义的所述待调试程序的运行协议;对应地,所述发送模块还用于:将所述调试指令发送给所述服务器,以使得所述服务器按照所述运行协议运行所述待调试程序。

在一些实施例中,所述待调试程序为RPC程序;对应地,所述发送模块还用于:采用RPC通信方式将所述调试指令发送给所述服务器,以使得所述服务器基于所述调试指令中的出入参信息对所述RPC程序进行调试。

需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3示出的方法。

在一些实施例中,计算机可读存储介质可以是铁电存储器(FRAM,Ferro magneticRandom Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号