一种代码在线调试方法、系统及存储介质转让专利

申请号 : CN202210920703.0

文献号 : CN114996166B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈军荣刘正天葛鹏杨世乾姜一维李洲

申请人 : 杭州高达软件系统股份有限公司

摘要 :

本申请公开一种代码在线调试方法、系统及存储介质,涉及代码测试的技术领域,包括以下步骤:基于用户端的登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID;根据测试请求中的会话ID确定调试池,判断测试起始点是否处在调试池和/或镜像池中的源代码的已测区域内,若不是,则根据测试指令从测试起始点开始对调试池中的源代码进行测试,并获取相应的测试参数;通过与当前调试池所对应的所有通信会话传输测试参数。不需要用户端具有代码调试环境即可进行代码调试,并且可以进行多人同时调试,调试过程中不会重复调试。

权利要求 :

1.一种代码在线调试方法,其特征在于,包括以下步骤:

基于用户端的登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID;

获取调试请求,所述调试请求包括标识码、代码标识和会话ID;

判断调试请求中的标识码是否为空;

若调试请求中的标识码为空,则创建调试池,并建立调试池与会话ID之间的对应关系,根据代码识别码确定需测试的源代码,将需测试的源代码拉取到调试池中;

若调试请求中的标识码不为空,则根据标识码从已建立的调试池中匹配到相应的调试池,判断与相应调试池建立对应关系的会话ID数量是否超过预设值,若与相应调试池建立对应关系的会话ID数量超过预设值,则复制相应的调试池以形成新的调试池,并建立新的调试池与会话ID之间的对应关系;其中,定义通过复制方式生成的调试池为相应调试池的镜像池;

若与相应调试池建立对应关系的会话ID数量未超过预设值,建立调试池与当前调试请求中的会话ID之间的对应关系;

根据会话ID确定对应的通信会话,通过通信会话传输与会话ID对应调试池中的源代码;

获取测试请求,所述测试请求包括测试起始点、测试指令和会话ID;

根据测试请求中的会话ID确定调试池,判断测试起始点是否处在调试池和/或镜像池中的源代码的已测区域内,若是,则通过相应通信会话传输提示信息;

若不是,则根据测试指令从测试起始点开始对调试池中的源代码进行测试,并获取相应的测试参数;

通过与当前调试池所对应的所有通信会话传输测试参数。

2.根据权利要求1所述的一种代码在线调试方法,其特征在于,根据测试指令对需测试的源代码进行测试,包括以下步骤:当测试指令为连续执行指令时,按照预定顺序依次执行代码行,并在每执行一个代码行后判断当前代码行是否预设有断点,若当前代码行存在预设的断点,则中断执行,并进入休眠模式以等待新的测试指令;

若当前代码行不存在预设的断点,则继续执行下一个代码行。

3.根据权利要求1所述的一种代码在线调试方法,其特征在于,根据测试指令对需测试的源代码进行测试,包括以下步骤:当测试指令为单步执行指令时,测试当前代码行,并在完成当前代码行的测试后进入休眠模式以等待新的测试指令。

4.根据权利要求1所述的一种代码在线调试方法,其特征在于,根据测试指令对需测试的源代码进行测试,包括以下步骤:当测试指令为进函数指令时,判断当前代码行是否存在函数调用表达式,若当前代码行存在函数调用表达式,则调用该函数调用表达式所对应的源代码;

若当前代码行不存在函数调用表达式,则将测试指令修改为单步执行指令,并执行单步执行指令。

5.根据权利要求4所述的一种代码在线调试方法,其特征在于,调用该函数调用表达式所对应的源代码,包括以下步骤:根据函数调用表达式确定对应的源代码,并将该源代码作为第一目标对象,根据目标对象确定相应的代码测试环境;

以连续执行指令在代码测试环境中对第一目标对象进行测试。

6.根据权利要求1所述的一种代码在线调试方法,其特征在于,在获取测试请求前,还包括以下步骤:获取断点请求,其中,断点请求包括源代码标识、断点行号以及会话ID;

根据断点请求中的源代码标识和断点行号形成预设的断点。

7.根据权利要求1所述的一种代码在线调试方法,其特征在于,当测试指令为出函数指令时,判断当前执行的源代码是否存在父级,若当前执行的源代码存在父级,则将对应的父级代码的下一代码行设置为第二目标对象,以连续执行指令测试当前的源代码,并在该连续执行指令结束后以第二目标对象作为测试对象。

8.一种代码在线调试方法系统,其特征在于:包括服务器和用户端,用户端,用于基于人工操作生成登录请求、调试请求和测试请求,以及接收测试参数、会话ID,并显示测试参数;

服务器,用于根据登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID,以及用于获取调试请求,并判断调试请求中的标识码是否为空;若调试请求中的标识码为空,则创建调试池,并建立调试池与会话ID之间的对应关系,根据代码识别码确定需测试的源代码,将需测试的源代码拉取到调试池中;若调试请求中的标识码不为空,则根据标识码从已建立的调试池中匹配到相应的调试池,判断与相应调试池建立对应关系的会话ID数量是否超过预设值,若与相应调试池建立对应关系的会话ID数量超过预设值,则复制相应的调试池以形成新的调试池,并建立新的调试池与会话ID之间的对应关系;若与相应调试池建立对应关系的会话ID数量未超过预设值,建立调试池与当前调试请求中的会话ID之间的对应关系;根据会话ID确定对应的通信会话,通过通信会话传输与会话ID对应调试池中的源代码;还用于获取测试请求中的测试指令以对需测试的源代码进行测试并获取相应的测试参数。

9.一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行如权利要求1至7中任一种代码在线调试方法的计算机程序。

说明书 :

一种代码在线调试方法、系统及存储介质

技术领域

[0001] 本申请涉及代码测试的领域,尤其是涉及一种代码在线调试方法、系统及存储介质。

背景技术

[0002] 低代码开发平台是无需编码或通过少量代码就可以快速生成应用程序的开发平台。而大部分低代码开发平台都是依赖自身所设计的开发语音来进行拓展。
[0003] 一旦需要对代码进行测试,就需要使用代码编译器或解析器。目前,这些测试装置往往以C/S客户端的方式存在,对于操作系统的依赖很高,例如需要构建专门的测试环境。
[0004] 针对上述中的相关技术,发明人认为在对通过低代码开发平台生成的代码进行测试时,必须下载相应的客户端,导致使用场景受限,不方便测试工作的开展。

发明内容

[0005] 为了更加方便代码测试,本申请提供一种代码在线调试方法、系统及存储介质。
[0006] 第一方面,本申请提供一种代码在线调试方法,采用如下的技术方案:
[0007] 一种代码在线调试方法,包括以下步骤:
[0008] 基于用户端的登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID;
[0009] 获取调试请求,所述调试请求包括标识码、代码标识和会话ID;
[0010] 判断调试请求中的标识码是否为空;
[0011] 若调试请求中的标识码为空,则创建调试池,并建立调试池与会话ID之间的对应关系,根据代码识别码确定需测试的源代码,将需测试的源代码拉取到调试池中;
[0012] 若调试请求中的标识码不为空,则根据标识码从已建立的调试池中匹配到相应的调试池,判断与相应调试池建立对应关系的会话ID数量是否超过预设值,[0013] 若与相应调试池建立对应关系的会话ID数量超过预设值,则复制相应的调试池以形成新的调试池,并建立新的调试池与会话ID之间的对应关系;其中,定义通过复制方式生成的调试池为相应调试池的镜像池;
[0014] 若与相应调试池建立对应关系的会话ID数量未超过预设值,建立调试池与当前调试请求中的会话ID之间的对应关系;
[0015] 根据会话ID确定对应的通信会话,通过通信会话传输与会话ID对应调试池中的源代码;
[0016] 获取测试请求,所述测试请求包括测试起始点、测试指令和会话ID;
[0017] 根据测试请求中的会话ID确定调试池,判断测试起始点是否处在调试池和/或镜像池中的源代码的已测区域内,
[0018] 若是,则通过相应通信会话传输提示信息;
[0019] 若不是,则根据测试指令从测试起始点开始对调试池中的源代码进行测试,并获取相应的测试参数;
[0020] 通过与当前调试池所对应的所有通信会话传输测试参数。
[0021] 通过采用上述技术方案,当用户端需要对源代码进行调试时,并不需要用户端具有代码调试环境,而是将测试请求发送给具有代码调试环境的服务器,服务器在完成代码调试后将测试参数反馈回用户端,并且通过建立通信会话的方式保证数据的无误传输。并且可以进行多人同时调试,调试过程中不会重复调试。
[0022] 可选的,根据测试指令对需测试的源代码进行测试,包括以下步骤:
[0023] 当测试指令为连续执行指令时,按照预定顺序依次执行代码行,并在每执行一个代码行后判断当前代码行是否预设有断点,
[0024] 若当前代码行存在预设的断点,则中断执行,并进入休眠模式以等待新的测试指令;
[0025] 若当前代码行不存在预设的断点,则继续执行下一个代码行。
[0026] 可选的,根据测试指令对需测试的源代码进行测试,包括以下步骤:
[0027] 当测试指令为单步执行指令时,测试当前代码行,并在完成当前代码行的测试后进入休眠模式以等待新的测试指令。
[0028] 可选的,根据测试指令对需测试的源代码进行测试,包括以下步骤:
[0029] 当测试指令为进函数指令时,判断当前代码行是否存在函数调用表达式,[0030] 若当前代码行存在函数调用表达式,则调用该函数调用表达式所对应的源代码;
[0031] 若当前代码行不存在函数调用表达式,则将测试指令修改为单步执行指令,并执行单步执行指令。
[0032] 可选的,调用该函数调用表达式所对应的源代码,包括以下步骤:
[0033] 根据函数调用表达式确定对应的源代码,并将该源代码作为第一目标对象,根据目标对象确定相应的代码测试环境;
[0034] 以连续执行指令在代码测试环境中对第一目标对象进行测试。
[0035] 可选的,在获取测试请求前,还包括以下步骤:
[0036] 获取断点请求,其中,断点请求包括源代码标识、断点行号以及会话ID;
[0037] 根据断点请求中的源代码标识和断点行号形成预设的断点。
[0038] 可选的,当测试指令为出函数指令时,判断当前执行的源代码是否存在父级,[0039] 若当前执行的源代码存在父级,则将对应的父级代码的下一代码行设置为第二目标对象,以连续执行指令测试当前的源代码,并在该连续执行指令结束后以第二目标对象作为测试对象。
[0040] 第二方面,本申请提供一种代码在线调试方法系统,采用如下的技术方案:
[0041] 一种代码在线调试方法系统,包括服务器和用户端,
[0042] 用户端,用于基于人工操作生成登录请求、调试请求和测试请求,以及接收测试参数、会话ID,并显示测试参数;
[0043] 服务器,用于根据登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID,以及用于获取调试请求,并判断调试请求中的标识码是否为空;若调试请求中的标识码为空,则创建调试池,并建立调试池与会话ID之间的对应关系,根据代码识别码确定需测试的源代码,将需测试的源代码拉取到调试池中;若调试请求中的标识码不为空,则根据标识码从已建立的调试池中匹配到相应的调试池,判断与相应调试池建立对应关系的会话ID数量是否超过预设值,若与相应调试池建立对应关系的会话ID数量超过预设值,则复制相应的调试池以形成新的调试池,并建立新的调试池与会话ID之间的对应关系;若与相应调试池建立对应关系的会话ID数量未超过预设值,建立调试池与当前调试请求中的会话ID之间的对应关系;根据会话ID确定对应的通信会话,通过通信会话传输与会话ID对应调试池中的源代码;还用于获取测试请求中的测试指令以对需测试的源代码进行测试并获取相应的测试参数。
[0044] 第三方面,本申请提供一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种代码在线调试方法的计算机程序。
[0045] 综上所述,本申请包括以下至少一种有益技术效果:当用户端需要对源代码进行调试时,并不需要用户端具有代码调试环境,而是将测试请求发送给具有代码调试环境的服务器,服务器在完成代码调试后将测试参数反馈回用户端,并且通过建立通信会话的方式保证数据的无误传输。

附图说明

[0046] 图1是本申请实施例的代码测试前的步骤流程图。
[0047] 图2是本申请实施例的代码测试中的步骤流程图。

具体实施方式

[0048] 以下结合附图1至图2对本申请作进一步详细说明。
[0049] 本申请实施例公开一种代码在线调试方法,应用在用户端和服务器上。其中,用户端是浏览器,且浏览器中无需为代码测试加载任何测试环境。服务器则需要安装用于代码测试的测试环境,且安装有代码编译器以用于实现开发语音与源代码的转换。
[0050] 一种代码在线调试方法代码在线调试方法,参见图1,包括以下步骤:
[0051] S100、基于用户端的登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID。
[0052] 登录请求是用户通过浏览器访问服务器时以预先注册的账号登录服务器而生成的。
[0053] 会话ID是在服务器接收到登录请求时创建的,会话ID的创建可以是根据接收到登录请求的时间来生成,也可以是根据创建的次数来按序生成,无论是哪一种方式,只要保障每个通信会话所对应的会话ID各不相同即可。
[0054] 用户以同一账号同一浏览器在不同时间访问服务器时,服务器所生成的会话ID也不相同。
[0055] 实际上,服务器可同时与多个用户端建立通信会话,正是由于不同用户端对应不同的会话ID,服务器才能够根据会话ID将数据传输到正确的用户端中。
[0056] S200、获取调试请求。
[0057] 调试请求由用户端生成,并通过通信会话传输给服务器。
[0058] 调试请求包括标识码、代码标识和会话ID。其中,代码标识用于代表用户所需测试的源代码,不同源代码具有不同的代码标识。用户可通过访问服务器,以确定服务器中存储的源代码所对应的代码标识。
[0059] 针对每种源代码的测试,服务器建立有公共调试池和个人调试池,其中,公共调试池只有一个,且用于存放最新版本的源代码。而个人调试池则根据用户的调试请求而生成,若用户结束代码调试,则个人调试池随之取消。当公共调试池内的源代码发生版本更新后,服务器会更新对应个人调试池内的源代码内容。
[0060] 标识码则是个人调试池的标识信息,每个个人调试池对应一个标识码。
[0061] S300、判断调试请求中的标识码是否为空。
[0062] 调试请求在生成时,标识码并不是必填选项,若用户没有填写标识码,则生成的调试请求中的标识码即为空。
[0063] S410、若调试请求中的标识码为空,则创建调试池,并建立调试池与会话ID之间的对应关系,根据代码识别码确定需测试的源代码,将需测试的源代码拉取到调试池中。
[0064] 在标识码为空的情况下,服务器根据源代码判断是否存在相应的公共调试池,若存在,则可以直接复制该公共调试池以形成新的个人调试池。
[0065] 但是不存在公共调试池时,则需要先创建公共调试池,将对应的源代码存入公共调试池后,再生成相应的个人调试池。后续步骤中出现的调试池均指代个人调试池。
[0066] 在另一个实施例中,若不考虑代码的版本更新,则无需设置公共调试池,直接创建个人调试池,并存入相应的源代码即可。
[0067] S420、若调试请求中的标识码不为空,则根据标识码从已建立的调试池中匹配到相应的调试池,判断与相应调试池建立对应关系的会话ID数量是否超过预设值。
[0068] 预设值由人工设置,一般设置为5。设置预设值以及设定判断的原因是在于在完成一个测试后服务器需要同时向与调试池对应的浏览器发送测试参数,而当同一个个人调试池所对应的会话ID越多,对于服务器的运行压力就越大,因此需要作出限制。
[0069] S430、若与相应调试池建立对应关系的会话ID数量超过预设值,则复制相应的调试池以形成新的调试池,并建立新的调试池与会话ID之间的对应关系。
[0070] 其中,定义通过复制调试池生成新的调试池中的两个个人调试池互为镜像池。
[0071] S440、若与相应调试池建立对应关系的会话ID数量未超过预设值,建立调试池与当前调试请求中的会话ID之间的对应关系。
[0072] S500、根据会话ID确定对应的通信会话,通过通信会话传输与会话ID对应调试池中的源代码。
[0073] 浏览器在接受到通信会话传输的源代码后,将源代码显示在浏览器预设的测试界面中,以便于用户观看以及后续测试指令的生成。
[0074] 在完成步骤S500后,服务器等待浏览器发送测试请求以进行代码测试。具体参见图2。
[0075] S600、获取测试请求。
[0076] 测试请求包括测试起始点、测试指令和会话ID。其中,测试起始点是与用户选定的代码在源代码中所处位置相对应的行号。测试指令则是基于用户在测试界面所触发的测试按键而生成,所触发的测试按键不同,则生成的测试指令也不同。测试指令包括单步执行指令、连续执行指令、进函数指令和出函数指令。测试请求中的会话ID则是对应于当前浏览器与服务器之间建立的通信会话。
[0077] 用户对测试界面中显示的源代码进行选定,并触发测试界面中的测试按键,从而生成测试请求。浏览器将测试请求通过通信会话传输给服务器。
[0078] S700、根据测试请求中的会话ID确定调试池,判断测试起始点是否处在调试池和/镜像池中的源代码的已测区域内。
[0079] 由于可以多个用户使用同一个调试池,那么测试动作就有可能存在有人先测试了部分源代码。为了避免重复测试,就需要在测试开始前,判断接下来要测试的源代码部分是否已经进行过测试。而为了方便判断,调试池会在进行过测试的源代码部分作出标识,而标识过得源代码部分即为已测区域。
[0080] 若接收到测试请求的调试池存在镜像池,则不仅需要判断测试起始点是否处在当前调试池的已测区域,还要判断测试起始点是否处在对应镜像池的已测区域。只有所有的判断结果均为否时,才认为测试起始点不处在调试池和/镜像池中的源代码的已测区域内。任意一个判断结果为是,则认为测试起始点处在调试池和/镜像池中的源代码的已测区域内。
[0081] S800、若测试起始点不处在调试池和/镜像池中的源代码的已测区域内,则根据测试指令从测试起始点开始对调试池中的源代码进行测试,并获取相应的测试参数。
[0082] 若测试起始点处在调试池和/镜像池中的源代码的已测区域内,则通过相应通信会话传输提示信息。提示信息可以是将测试起始点标注出红色,以表示存在冲突,还可以直接采用弹框方式作为提示。
[0083] 在开始测试时,测试请求中的测试起始点所对应的代码行将进入“测试”模式,然后根据测试指令对进入“测试”模式下的代码行进行测试。不同的测试指令对应不同的测试方法。
[0084] 至于测试指令是否适用于当前需测试的源代码,则需要服务器进一步判断。因此,根据测试指令对需测试的源代码进行测试,包括以下步骤:
[0085] S810、当测试指令为连续执行指令时,按照预定顺序依次执行代码行,并在每执行一个代码行后判断当前代码行是否预设有断点。若当前代码行存在预设的断点,则中断执行,并进入休眠模式以等待新的测试指令;若当前代码行不存在预设的断点,则继续执行下一个代码行。
[0086] 预定顺序是指代码的执行顺序,在本实施例中,预定顺序为从上往下的顺序。
[0087] 休眠模式是指服务器将下一个代码行设置为“测试”状态后服务器暂停测试。服务器内还设置有休眠时间,在本实施例中,休眠时间为10分钟。
[0088] 当服务器进入休眠模式后,启动计时,若在计时时间到达休眠时间的过程中服务器接收到同一会话ID的测试指令,则服务器退出休眠模式并执行新的测试指令。若在实际时间到达休眠时间的过程中,服务器未接收到同一会话ID的测试指令,则服务器退出整个代码测试。
[0089] 此外,当前代码行在测试完毕且该代码行不存在预设的断点后,还需要判断下一行代码行是否为空,若下一行代码行不为空,则继续执行连续执行指令。若下一行代码行为空,则认为当前代码行为尾行,结束当前的测试指令的执行。
[0090] S820、当测试指令为单步执行指令时,测试当前代码行,并进入休眠模式以等待新的测试指令。
[0091] 单步执行指令与连续执行指令的区别在于:单步执行指令只会执行当前的代码行,执行完毕后,下一个代码行自动变更为“调整”模式,但服务器直接进入休眠模式;而连续执行指令下,服务器将连续对代码行进行测试,直到代码结束或是下一个代码行存在预设的断点。
[0092] S830、当测试指令为进函数指令时,判断当前代码行是否存在函数调用表达式,[0093] 若当前代码行存在函数调用表达式,则调用该函数调用表达式所对应的源代码;
[0094] 若当前代码行不存在函数调用表达式,则将测试指令修改为单步执行指令,并执行单步执行指令。
[0095] 服务器在接收到进函数指令时,并不会马上执行进函数指令,而是先判断需测试的代码行是否满足进函数指令的执行要求,即需测试的代码行是否存在函数调用表达式。只有当需测试的代码行存在函数调用表达式时,则服务器正常执行进函数指令,当需测试的代码不存在函数调用表达式时,进函数指令无法被正常执行,因此服务器将执行单步执行指令。
[0096] 在一个实施例中,调用该函数调用表达式所对应的源代码,包括以下步骤:
[0097] S831、根据函数调用表达式确定对应的源代码,并将该源代码作为第一目标对象,根据目标对象确定相应的代码测试环境。
[0098] 不同类型的源代码在执行时往往需要不同的代码测试环境,因此在执行进函数指令时,需要先调用适合的代码测试环境。
[0099] S832、以连续执行指令在代码测试环境中对第一目标对象进行测试。
[0100] 其中,步骤S832中服务器根据连续执行指令测试源代码,与步骤S810中服务器根据连续执行指令测试源代码的方式是相同的,在此不再赘述。
[0101] S840、当测试指令为出函数指令时,判断当前执行的源代码是否存在父级,[0102] 若当前执行的源代码存在父级,则将对应的父级代码的下一代码行设置为第二目标对象,以连续执行指令测试当前的源代码,并在该连续执行指令结束后以第二目标对象作为测试对象。
[0103] 若当前源代码存在父级,那么当前源代码所对应的函数调用表达式必然在其父级源代码中存在。而对应的父级代码的下一代码行设置为第二目标对象,即是将父级源代码中函数调用表达式所在行的下一行作为后续测试指令的执行对象。
[0104] 若当前执行的源代码不存在父级,仍以连续执行指令测试当前源代码,且不设置第二目标对象。
[0105] S900、通过与当前调试池所对应的所有通信会话传输测试参数。
[0106] 在服务器完成对源代码的测试后,将测试参数反馈到浏览器中。浏览器配合下载的源代码显示测试参数,使得用户能够直观了解到每行代码行所对应的测试参数。
[0107] 需注意的是,源代码中预设的断点并不是由工作人员设定的,而是由用户自行设置。
[0108] 因此,在获取测试请求前,服务器还需完成断点设置,具体步骤如下:
[0109] S710、获取断点请求,其中,断点请求包括源代码标识、断点行号以及会话ID。
[0110] 断点请求的生成类似测试请求,同样是用户通过浏览器访问服务器中存储的源代码,并通过用户的操作以确定源代码标识以及断点行号,然后将源代码标识、断点行号和会话ID结合到一起以形成断点请求。
[0111] 其中,断点行号是指用户在浏览器显示的源代码中选定的部分代码所对应的行号。
[0112] S720、根据断点请求中的源代码标识和断点行号形成预设的断点。
[0113] 预设的断点并不是在代码行上做标记,而是将断点请求中的源代码标识和断点行号存储到与会话ID对应的中断栈中。具体的形成过程如下:
[0114] 服务器在接收到断点请求后,服务器先判断服务器中是否存在与断点请求中的会话ID对应的中断栈。
[0115] 若服务器中不存在与断点请求中的会话ID对应的中断栈,则服务器建立与该会话ID对应的中断栈,并将断点请求中的源代码标识、断点行号存储到该中断栈中。
[0116] 若服务器中已存在与断点请求中的会话ID对应的中断栈,则直接将源代码标识、断点行号存储到对应的中断栈中。
[0117] 判断下一个代码行是否预设有断点的方式即为判断下一个代码行所对应的行号是否存储在中断栈中。
[0118] 另外,服务器将测试参数传输给浏览器时,服务器还会将当前处在“测试”模式的源代码的代码标识和行号一同传输给浏览器。
[0119] 浏览器比较接收到的代码标识与当前显示的源代码的代码标识是否一致。
[0120] 若两个代码标识一致,则浏览器根据接收到的行号将相应的代码高亮显示,以提醒用户下一步的测试指令将以该部分代码开始测试。
[0121] 若两个代码标识不一致,则浏览器根据接收到的代码标识从服务器中下载相应的源代码并显示该源代码,然后浏览器根据接收到的行号将相应的代码高亮显示。
[0122] 正是通过每次测试后核对代码标识,在发生代码测试环境变换的时候,即在父级函数调用表达式和子级函数调用表达式之间跳跃时,能够在浏览器上同步显示相应的源代码,使得用户能够选择更加合适的测试指令。
[0123] 本申请实施例还公开一种代码在线调试方法系统,包括服务器和用户端。其中,用户端存在多个,多个用户端均通过互联网与服务器连接。
[0124] 用户端,用于基于人工操作生成登录请求、调试请求和测试请求,以及接收测试参数、会话ID,并显示测试参数;
[0125] 服务器,用于根据登录请求建立与相应用户端的通信会话,生成与该通信会话对应的会话ID并通过通信会话传输会话ID,以及用于获取调试请求,并判断调试请求中的标识码是否为空;若调试请求中的标识码为空,则创建调试池,并建立调试池与会话ID之间的对应关系,根据代码识别码确定需测试的源代码,将需测试的源代码拉取到调试池中;若调试请求中的标识码不为空,则根据标识码从已建立的调试池中匹配到相应的调试池,判断与相应调试池建立对应关系的会话ID数量是否超过预设值,若与相应调试池建立对应关系的会话ID数量超过预设值,则复制相应的调试池以形成新的调试池,并建立新的调试池与会话ID之间的对应关系;若与相应调试池建立对应关系的会话ID数量未超过预设值,建立调试池与当前调试请求中的会话ID之间的对应关系;根据会话ID确定对应的通信会话,通过通信会话传输与会话ID对应调试池中的源代码;还用于获取测试请求中的测试指令以对需测试的源代码进行测试并获取相应的测试参数。
[0126] 本申请还提供一种计算机可读存储介质,存储有能够被处理器加载并执行如上述代码在线调试方法的计算机程序。
[0127] 以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。