CN109726129B - 代码段运行方法、装置、终端及存储介质 - Google Patents
代码段运行方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN109726129B CN109726129B CN201811640147.1A CN201811640147A CN109726129B CN 109726129 B CN109726129 B CN 109726129B CN 201811640147 A CN201811640147 A CN 201811640147A CN 109726129 B CN109726129 B CN 109726129B
- Authority
- CN
- China
- Prior art keywords
- terminal
- code segment
- debugging
- instruction
- target instruction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 97
- 238000004891 communication Methods 0.000 claims abstract description 35
- 238000013507 mapping Methods 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 26
- 230000009977 dual effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011022 operating instruction Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本公开是关于一种代码段运行方法、装置、终端及存储介质,属于计算机技术领域。方法包括:当在第二终端中运行代码段时,确定第二终端的双连接通信协议web socket调试服务的第二调试服务端口和第一终端的web socket调试服务的第一调试服务端口;第一终端与第二终端根据第二调试服务端口和第一调试服务端口建立web socket调试连接;第一终端与第二终端通过web socket调试连接传输第二终端运行代码段的运行状态信息。使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
Description
技术领域
本公开是关于计算机技术领域,具体来说是关于一种代码段运行方法、装置、终端及存储介质。
背景技术
随着计算机技术的迅速发展,应用程序的功能逐渐增多,规模逐渐扩大,应用程序测试已成为检验应用程序质量必不可少的步骤。技术人员开发出应用程序的代码段后,通常需要运行该代码段,得到运行结果,从而根据运行结果对代码段进行优化改进。
技术人员通过第一终端开发出应用程序的第一代码段,将该第一代码段存储于第一终端中。当技术人员要对第一代码段进行测试时,第一终端与第二终端建立通信连接。由第一终端通过该通信连接向第二终端发送该第一代码段,由第二终端运行该第一代码段,运行完成时得到运行结果。技术人员在第二终端上查看该运行结果,当需要对第一代码段进行修改时,技术人员在第一终端上对第一代码段进行修改,得到第二代码段。由第一终端通过该通信连接向第二终端发送第二代码段,由第二终端运行该第二代码段,运行完成时得到运行结果,然后技术人员再次在第二终端上查看该运行结果。
上述方案中技术人员只能在第二终端上查看运行结果,需要对代码段进行修改时,在第一终端上进行修改,然后再次在第二终端上查看运行结果,导致调试效率低。
发明内容
本公开提供一种代码段运行方法、装置、终端及存储介质,能够克服相关技术中需要对代码段进行修改时,在第一终端上进行修改,然后再次在第二终端上查看运行结果,导致调试效率低的问题,所述技术方案如下:
根据本公开实施例的第一方面,提供了一种代码段运行方法,应用于第一终端,所述方法包括:
当在第二终端中运行代码段时,确定所述第二终端的双连接通信协议web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口;
根据所述第二调试服务端口和所述第一调试服务端口,与所述第二终端之间建立web socket调试连接;
通过所述web socket调试连接接收所述第二终端运行所述代码段的运行状态信息。
在一种可能实现的方式中,所述确定所述第二终端的web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口,包括:
接收所述第二终端发送的调试请求,所述调试请求携带所述第二调试服务端口的第二端口标识;
确定所述第二端口标识对应的所述第二调试服务端口;
根据所述第二端口标识,为所述第二终端分配第一调试服务端口。
在另一种可能实现的方式中,所述根据所述第二端口标识,为所述第二终端分配第一调试服务端口,包括:
确定映射端口表中是否存在与所述第二端口标识对应的端口标识;
当存在时,从所述映射端口表中获取与所述第二端口标识对应的端口标识,为所述第二终端分配所述端口标识对应的第一调试服务端口;
当不存在时,从所述第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为所述第二终端分配所述第一调试服务端口。
在另一种可能实现的方式中,所述方法还包括:
当确定所述第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代所述第一目标指令的第二目标指令;
通过所述web socket调试连接,向所述第二终端发送第一运行请求,所述第一运行请求携带所述第二目标指令,所述第一运行请求用于指示所述第二终端以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
在另一种可能实现的方式中,所述方法还包括:
显示所述代码段中的至少一条指令;
当检测到对所述第一目标指令的断点设置操作时,通过所述web socket调试连接,向所述第二终端发送断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,用于指示所述第二终端为所述地址信息对应的所述第一目标指令设置断点,使所述第二终端运行所述第一目标指令的上一条指令后基于所述断点停止运行。
在另一种可能实现的方式中,所述方法还包括:
当检测到对所述第一目标指令的断点取消操作时,通过所述web socket调试连接,向所述第二终端发送断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息,用于指示所述第二终端取消为所述地址信息对应的所述第一目标指令设置的断点。
在另一种可能实现的方式中,所述方法还包括:
当检测到重新运行操作时,通过所述web socket调试连接,向所述第二终端发送第二运行请求,所述第二运行请求用于指示所述第二终端从所述代码段的第一条指令开始,重新运行所述代码段。
在另一种可能实现的方式中,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
根据本公开实施例的第二方面,提供了一种代码段运行方法,应用于第二终端,所述方法包括:
当运行代码段时,与第一终端之间建立双连接通信协议web socket调试连接;
获取所述代码段的运行状态信息;
通过所述web socket调试连接向所述第一终端发送所述运行状态信息。
在一种可能实现的方式中,所述与第一终端之间建立web socket调试连接,包括:
向所述第一终端发送调试请求,所述调试请求携带所述第二终端的web socket调试服务的第二端口标识,以使所述第一终端为所述第二终端分配第一调试服务端口,并根据所述第一调试服务端口和所述第二端口标识对应的第二调试服务端口,建立与所述第一终端之间的web socket调试连接。
在另一种可能实现的方式中,所述方法还包括:
运行代码段中第一目标指令的上一条指令后停止运行;
通过所述web socket调试连接,接收所述第一终端发送的第一运行请求,所述第一运行请求携带用于替代所述第一目标指令的第二目标指令;
以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
在另一种可能实现的方式中,所述方法还包括:
在运行所述代码段的过程中,通过与所述第一终端之间的web socket调试连接,接收所述第一终端发送的断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,根据所述地址信息,为所述第一目标指令设置断点;
所述运行代码段中第一目标指令的上一条指令后停止运行,包括:当运行至所述第一目标指令的上一条指令后,基于所述断点停止运行。
在另一种可能实现的方式中,所述当运行至所述第一目标指令的上一条指令后,基于所述断点停止运行,包括:
继续运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行;或者,
接收所述第一终端通过所述web socket调试连接发送的第二运行请求,基于所述第二运行请求,从所述代码段的第一条指令开始,重新运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行。
在另一种可能实现的方式中,所述方法还包括:
通过所述web socket调试连接,接收所述第一终端发送的断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息;
取消为所述地址信息对应的所述第一目标指令设置的断点。
在另一种可能实现的方式中,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
根据本公开实施例的第三方面,提供了一种代码段运行装置,应用于第一终端,所述装置包括:
确定模块,用于当在第二终端中运行代码段时,确定所述第二终端的双连接通信协议web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口;
第一建立模块,用于根据所述第二调试服务端口和所述第一调试服务端口,与所述第二终端之间建立web socket调试连接;
第一接收模块,用于通过所述web socket调试连接接收所述第二终端运行所述代码段的运行状态信息。
在一种可能实现的方式中,所述确定模块,还用于接收所述第二终端发送的调试请求,所述调试请求携带所述第二调试服务端口的第二端口标识;确定所述第二端口标识对应的所述第二调试服务端口;根据所述第二端口标识,为所述第二终端分配第一调试服务端口。
在另一种可能实现的方式中,所述确定模块,还用于确定映射端口表中是否存在与所述第二端口标识对应的端口标识;当存在时,从所述映射端口表中获取与所述第二端口标识对应的端口标识,为所述第二终端分配所述端口标识对应的第一调试服务端口;当不存在时,从所述第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为所述第二终端分配所述第一调试服务端口。
在另一种可能实现的方式中,所述装置还包括:
第一获取模块,当确定所述第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代所述第一目标指令的第二目标指令;
第一发送模块,用于通过所述web socket调试连接,向所述第二终端发送第一运行请求,所述第一运行请求携带所述第二目标指令,所述第一运行请求用于指示所述第二终端以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
在另一种可能实现的方式中,所述装置还包括:
显示模块,用于显示所述代码段中的至少一条指令;
第二发送模块,用于当检测到对所述第一目标指令的断点设置操作时,通过所述web socket调试连接,向所述第二终端发送断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,用于指示所述第二终端为所述地址信息对应的所述第一目标指令设置断点,使所述第二终端运行所述第一目标指令的上一条指令后基于所述断点停止运行。
在另一种可能实现的方式中,所述装置还包括:
第三发送模块,用于当检测到对所述第一目标指令的断点取消操作时,通过所述web socket调试连接,向所述第二终端发送断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息,用于指示所述第二终端取消为所述地址信息对应的所述第一目标指令设置的断点。
在另一种可能实现的方式中,所述装置还包括:
第四发送模块,用于当检测到重新运行操作时,通过所述web socket调试连接,向所述第二终端发送第二运行请求,所述第二运行请求用于指示所述第二终端从所述代码段的第一条指令开始,重新运行所述代码段。
在另一种可能实现的方式中,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
根据本公开实施例的第四方面,提供了一种代码段运行装置,应用于第二终端,所述装置包括:
第二建立模块,用于当运行代码段时,与第一终端之间建立双连接通信协议websocket调试连接;
第二获取模块,用于获取所述代码段的运行状态信息;
第五发送模块,用于通过所述web socket调试连接向所述第一终端发送所述运行状态信息。
在一种可能实现的方式中,所述第二建立模块,还用于向所述第一终端发送调试请求,所述调试请求携带所述第二终端的web socket调试服务的第二端口标识,以使所述第一终端为所述第二终端分配第一调试服务端口,并根据所述第一调试服务端口和所述第二端口标识对应的第二调试服务端口,建立与所述第一终端之间的web socket调试连接。
在另一种可能实现的方式中,所述装置还包括:
运行模块,用于运行代码段中第一目标指令的上一条指令后停止运行;
第二接收模块,用于通过所述web socket调试连接,接收所述第一终端发送的第一运行请求,所述第一运行请求携带用于替代所述第一目标指令的第二目标指令;
所述运行模块,还用于以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
在另一种可能实现的方式中,所述装置还包括:
第三接收模块,用于在运行所述代码段的过程中,通过与所述第一终端之间的websocket调试连接,接收所述第一终端发送的断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,根据所述地址信息,为所述第一目标指令设置断点;
所述运行模块,还用于当运行至所述第一目标指令的上一条指令后,基于所述断点停止运行。
在另一种可能实现的方式中,所述运行模块,还用于继续运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行;或者,
接收所述第一终端通过所述web socket调试连接发送的第二运行请求,基于所述第二运行请求,从所述代码段的第一条指令开始,重新运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行。
在另一种可能实现的方式中,所述装置还包括:
第四接收模块,用于通过所述web socket调试连接,接收所述第一终端发送的断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息;
取消模块,用于取消为所述地址信息对应的所述第一目标指令设置的断点。
在另一种可能实现的方式中,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
根据本公开实施例的第五方面,提供了一种第一终端,其特征在于,所述终端包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
当在第二终端中运行代码段时,确定所述第二终端的双连接通信协议web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口;
根据所述第二调试服务端口和所述第一调试服务端口,与所述第二终端之间建立web socket调试连接;
通过所述web socket调试连接接收所述第二终端运行所述代码段的运行状态信息。
根据本公开实施例的第六方面,提供了一种第二终端,其特征在于,所述终端包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
当运行代码段时,与第一终端之间建立双连接通信协议web socket调试连接;
获取所述代码段的运行状态信息;
通过所述web socket调试连接向所述第一终端发送所述运行状态信息。
根据本公开实施例的第七方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本公开实施例的第一方面所述的代码段运行方法中所运行的操作。
根据本公开实施例的第八方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本公开实施例的第二方面所述的代码段运行方法中所运行的操作。
本公开实施例提供的技术方案带来的有益效果至少包括:
在本公开实施例中,在第二终端运行代码时,第一终端与第二终端通过第二调试服务端口与第一调试服务端口建立web socket调试连接,第二终端通过该web socket调试连接连接向第一终端发送代码段在第二终端的运行状态信息,使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种代码段运行方法的实施环境的示意图;
图2是根据一示例性实施例示出的一种代码段运行方法的流程图;
图3是根据一示例性实施例示出的一种代码段运行方法的流程图;
图4是根据一示例性实施例示出的一种代码段运行方法的流程图;
图5是根据一示例性实施例示出的一种代码段运行方法的流程图;
图6是根据一示例性实施例示出的一种代码段运行方法的流程图;
图7是根据一示例性实施例示出的一种代码段运行装置的结构示意图;
图8是根据一示例性实施例示出的一种代码段运行装置的结构示意图;
图9是根据一示例性实施例示出的一种终端的框图。。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种代码段运行方法所涉及的系统架构的示意图。该系统架构包括:第一终端101和第二终端102。第一终端101和第二终端102之间可以通过USB连接(Universal Serial Bus,通用串行总线)或者无线网络进行通信。其中,该无线网络可以为局域网或者广域网。
第一终端101为开发并编译应用程序的代码段的终端,第二终端102为运行代码段的终端。技术人员通过第一终端101开发出应用程序的代码段,并将该代码段存储于第一终端101中。当技术人员通过第二终端102对该代码段进行调试时,第一终端101与第二终端102建立web socket调试连接,第二终端102可以通过该web socket调试连接将第二终端102运行该代码段的运行状态信息发送给第一终端101。第一终端101接收该代码段的运行状态信息,从而可以在本地查看该代码段的运行状态信息。
其中,运行状态信息包括第二终端102当前显示的程序界面、代码段的运行统计数据或第二终端102当前运行指令的地址信息中的至少一项。该应用程序可以为快应用或者直达服务的应用。web socket调试连接是一种可以进行双向通信的调试连接,通过该websocket调试连接第一终端101与第二终端102之间可以主动发送或接收数据。例如,第二终端102可以主动将运行状态信息发送给第一终端101。第一终端101可以为任一具有代码开发功能的终端设备,例如,该第一终端101可以为计算机设备。第二终端102可以为任一具有运行代码段功能的终端设备,例如,该第二终端102也可以为计算机设备、手持设备(如手机、平板电脑等)、可穿戴设备或其他可以运行代码段的终端设备。
图2是根据本公开实施例示出的一种代码段运行方法的流程图,该方法适用于第一终端,参见图2,该方法包括以下步骤:
在步骤S201中,当在第二终端中运行代码段时,确定第二终端的双连接通信协议web socket调试服务的第二调试服务端口和第一终端的web socket调试服务的第一调试服务端口。
在步骤S202中,根据第二调试服务端口和第一调试服务端口,与第二终端之间建立web socket调试连接。
在步骤S203中,通过web socket调试连接接收第二终端运行代码段的运行状态信息。
在一种可能实现的方式中,确定第二终端的web socket调试服务的第二调试服务端口和第一终端的web socket调试服务的第一调试服务端口,包括:
接收第二终端发送的调试请求,调试请求携带第二调试服务端口的第二端口标识;
确定第二端口标识对应的第二调试服务端口;
根据第二端口标识,为第二终端分配第一调试服务端口。
在另一种可能实现的方式中,根据第二端口标识,为第二终端分配第一调试服务端口,包括:
确定映射端口表中是否存在与第二端口标识对应的端口标识;
当存在时,从映射端口表中获取与第二端口标识对应的端口标识,为第二终端分配端口标识对应的第一调试服务端口;
当不存在时,从第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为第二终端分配第一调试服务端口。
在另一种可能实现的方式中,方法还包括:
当确定第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代第一目标指令的第二目标指令;
通过web socket调试连接,向第二终端发送第一运行请求,第一运行请求携带第二目标指令,第一运行请求用于指示第二终端以第二目标指令作为第一目标指令的替代指令,继续运行代码段。
在另一种可能实现的方式中,方法还包括:
显示代码段中的至少一条指令;
当检测到对第一目标指令的断点设置操作时,通过web socket调试连接,向第二终端发送断点设置请求,断点设置请求携带第一目标指令的地址信息,用于指示第二终端为地址信息对应的第一目标指令设置断点,使第二终端运行第一目标指令的上一条指令后基于断点停止运行。
在另一种可能实现的方式中,方法还包括:
当检测到对第一目标指令的断点取消操作时,通过web socket调试连接,向第二终端发送断点取消请求,断点取消请求携带第一目标指令的地址信息,用于指示第二终端取消为地址信息对应的第一目标指令设置的断点。
在另一种可能实现的方式中,方法还包括:
当检测到重新运行操作时,通过web socket调试连接,向第二终端发送第二运行请求,第二运行请求用于指示第二终端从代码段的第一条指令开始,重新运行代码段。
在另一种可能实现的方式中,运行状态信息包括第二终端当前显示的程序界面、代码段的运行统计数据或第二终端当前运行指令的地址信息中的至少一项。
在本公开实施例中,在第二终端运行代码时,第一终端与第二终端通过第二调试服务端口与第一调试服务端口建立web socket调试连接,第二终端通过该web socket调试连接连接向第一终端发送代码段在第二终端的运行状态信息,使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
图3是根据本公开实施例示出的一种代码段运行方法的流程图,该方法适用于第二终端,参见图3,该方法包括以下步骤:
在步骤S301中,当运行代码段时,与第一终端之间建立双连接通信协议websocket调试连接。
在步骤S302中,获取代码段的运行状态信息。
在步骤S303中,通过web socket调试连接向第一终端发送运行状态信息。
在一种可能实现的方式中,与第一终端之间建立web socket调试连接,包括:
向第一终端发送调试请求,调试请求携带第二终端的web socket调试服务的第二端口标识,以使第一终端为第二终端分配第一调试服务端口,并根据第一调试服务端口和第二端口标识对应的第二调试服务端口,建立与第一终端之间的web socket调试连接。
在另一种可能实现的方式中,方法还包括:
运行代码段中第一目标指令的上一条指令后停止运行;
通过web socket调试连接,接收第一终端发送的第一运行请求,第一运行请求携带用于替代第一目标指令的第二目标指令;
以第二目标指令作为第一目标指令的替代指令,继续运行代码段。
在另一种可能实现的方式中,方法还包括:
在运行代码段的过程中,通过与第一终端之间的web socket调试连接,接收第一终端发送的断点设置请求,断点设置请求携带第一目标指令的地址信息,根据地址信息,为第一目标指令设置断点;
运行代码段中第一目标指令的上一条指令后停止运行,包括:当运行至第一目标指令的上一条指令后,基于断点停止运行。
在另一种可能实现的方式中,当运行至第一目标指令的上一条指令后,基于断点停止运行,包括:
继续运行代码段,直至运行第一目标指令的上一条指令后,基于断点停止运行;或者,
接收第一终端通过web socket调试连接发送的第二运行请求,基于第二运行请求,从代码段的第一条指令开始,重新运行代码段,直至运行第一目标指令的上一条指令后,基于断点停止运行。
在另一种可能实现的方式中,方法还包括:
通过web socket调试连接,接收第一终端发送的断点取消请求,断点取消请求携带第一目标指令的地址信息;
取消为地址信息对应的第一目标指令设置的断点。
在另一种可能实现的方式中,运行状态信息包括第二终端当前显示的程序界面、代码段的运行统计数据或第二终端当前运行指令的地址信息中的至少一项。
在本公开实施例中,在第二终端运行代码时,第一终端与第二终端通过第二调试服务端口与第一调试服务端口建立web socket调试连接,第二终端通过该web socket调试连接连接向第一终端发送代码段在第二终端的运行状态信息,使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
图4是根据本公开实施例示出的一种代码段运行方法的流程图,在本公开实施例中,主要描述了第一终端与第二终端建立web socket调试连接,第一终端通过该websocket调试连接接收第二终端发送的运行代码段的运行状态信息的过程,参见图4,该方法包括以下步骤:
在步骤S401中,第一终端向第二终端发送代码段。
在第二终端中运行代码段之前,第二终端需要接入第一终端,从第一终端中获取该代码段。因此,第一终端检测是否有第二终端接入;当检测到有第二终端接入时,向第二终端发送该代码段。其中,第二终端可以启动http服务,基于该http服务,通过ADB(AndroidDebug Bridge,安卓调试桥)轮询检测是否有第二终端接入。
在一种可能的实现方式中,第一终端在完成代码段的编译后,将该代码段存储到本地,第一终端可以在检测到第二终端后直接向第二终端发送该代码段。在另一种可能的实现方式中,第一终端也可以在检测到第二终端后,不直接向第二终端发送该代码段,而接收到第二终端的第一获取请求后,根据第一获取请求,向该第二终端发送该代码段,其中,该第一获取请求携带第二终端的终端标识,且用于获取代码段。
在另一种可能的实现方式中,第一终端在完成代码段的编译后,将编译完成的代码段存储在服务器中,第二终端从服务器中获取该代码段。相应的,本步骤可以为:
第一终端将该代码段存储在服务器中;第二终端向服务器发送第二获取请求,其中,该第二获取请求中携带该第二终端的终端标识和该应用程序的标识;当服务器接收到该第二获取请求后,根据该应用程序的标识,获取该代码段,根据该第二终端的终端标识,向第二终端发送该代码段。
该代码段可以为该应用程序的完整代码,也可以为该应用程序的完整代码段中的任一段代码段,该代码段还可以为第一终端完成本地调试后生成的rpk安装文件。其中,第二终端可以通过USB接入第一终端,从而在没有网络的情况下,也可以实现在第二终端中运行该代码段,使得调试代码段不受网络约束,提高了调试代码段的随意性和便捷性。
需要说明的一点是,第一终端检测到第二终端接入时,第一终端设置一组调试服务端口,以便于后续从该一组调试服务端口中为第二终端选择处于空闲状态的第一调试服务端口。其中,该一组调试服务端口中包括至少一个调试服务端口。
参见图5,在第二终端中运行代码段时,技术人员将第二终端通过USB接入第一终端。第一终端启动http服务,基于该http服务,通过ADB轮询检测是否有第二终端接入。当检测到第二终端通过USB接入第一终端时,第一终端设置一组调试服务端口。
在步骤S402中,第二终端接收第一终端发送的代码段,并运行该代码段。
该代码段包括至少一条指令。在一种可能的实现方式中,第二终端接收该代码段后,在第二终端上逐条执行该代码段中的每条指令,并显示该代码段中每条指令对应的运行状态信息,该运行状态信息包括第二终端当前显示的程序界面、代码段的运行统计数据或第二终端当前运行指令的地址信息中的至少一项。
在一种可能的实现方式中,第二终端接收到第一终端发送的代码段后直接运行该代码段。在另一种可能的实现方式中,第二终端接收到该代码段后,在接收到开始运行指令时,第二终端才开始运行该代码段,其中该开始运行指令可以为第一终端发送的开始运行指令,也可以为第二终端生成的开始运行指令。当该开始运行指令为第一终端发送的开始运行指令时,该开始运行指令可以通过USB连接发送的,也可以为通过无线网络发送。当该开始运行指令为第二终端生成的开始运行指令时,第二终端的显示界面上显示开始运行按钮,当第二终端检测到该开始运行按钮被触发时,生成开始运行指令。
例如,继续参见图5,当在第二终端中运行该代码段时,技术人员向第二终端中触发调试指示,第二终端根据该调试指令,运行该代码段,并启动web socket调试服务。
在步骤S403中,第二终端运行该代码段时,向第一终端发送调试请求,该调试请求携带该第二终端的web socket调试服务的第二调试服务端口的第二端口标识。
第二终端启动web socket调试服务,通过该web socket调试服务设置一组调试服务端口,从该一组调试服务端口中,选择web socket调试服务的第二调试服务端口,向第一终端发送调试请求,该调试请求至少携带该第二端口标识,还可以携带第二终端的终端标识。
其中,该一组调试服务端口中包括至少一个调试服务端口。相应的,第二终端从该一组调试服务端口中,选择web socket调试服务的第二调试服务端口的步骤可以为:第二终端从该一组调试服务端口中随机选择第二调试服务端口;或者,第二终端显示websocket调试界面,该web socket调试界面中包括该至少一个调试服务端口的端口标识,获取被选择的第二端口标识,确定第二端口标识对应的第二调试服务端口。
其中,该第二调试服务端口还用于第一终端与第二终端建立web socket调试连接后第一终端与第二终端之间传输数据。端口标识可以为调试服务端口的编号。第二终端的终端标识可以为第二终端的SN(Serial Number,产品序列号)号码等。该web socket调试服务指以web socket协议为标准的调试服务,通过该web socket调试服务,第二终端可以直接将代码段的运行状态信息发送给第一终端。
需要说明的一点是,当第一终端与第二终端通过USB连接进行通信时,第二终端可以通过该USB连接向第一终端发送该调试请求;当第一终端与第二终端通过无线网络进行通信时,第二终端可以通过该无线网络向第一终端发送调试请求。
例如,继续参见图5,第二终端向第一终端发送调试请求,调试请求中携带第二终端的调试服务端口标识和第二终端的终端标识,并开始运行该代码段。
在步骤S404中,第一终端接收该第二终端发送的调试请求。
在本步骤中,第一终端接收该第二终端发送的调试请求,并获取该调试请求中的第二端口标识。当该调试请求中还携带第二终端的终端标识时,第一终端还从该调试请求中获取第二终端的终端标识。
由于在步骤S403中,第二终端可以通过USB连接向第一终端发送该调试请求;第二终端还可以通过无线网络向第一终端发送该调试请求。相应的,当第一终端与第二终端通过USB连接进行通信时,第一终端通过USB连接接收第二终端发送的调试请求;当第一终端与第二终端通过无线网络进行通信时,第一终端可以通过该无线网络接收第二终端发送的调试请求。
在步骤S405中,第一终端确定该第二端口标识对应的第一调试服务端口。
在一种可能的实现方式中,第一终端事先存储第二端口标识与第二调试服务端口之间的对应关系,当第一终端接收到该第二端口标识时,根据该第二端口标识从第二端口标识与第二调试服务端口之间的对应关系中获取第二调试服务端口。
在步骤S406中,第一终端根据该第一端口标识,为第二终端分配第一调试服务端口。
在一种可能的实现方式中,第一终端直接为第二终端分配第一调试服务端口。在另一种可能的实现方式中,第一终端中存储映射端口表,该映射端口表中存储已分配的第一终端的端口标识与第二终端的端口标识之间的对应关系,根据该映射端口表,确定之前是否为第二终端分配过调试服务端口,如果为第二终端分配过调试服务端口,则获取之前分配的调试服务端口。相应的,该过程可以通过以下步骤(1)-(3)实现,包括:
(1)第一终端确定映射端口表中是否存在与该第二端口标识对应的第一端口标识。
在一种可能的实现方式中,映射端口表中存储已分配的第一终端的端口标识和第二终端的端口标识的对应关系;相应的,本步骤可以为:第一终端确定该映射端口表中是否存在该第二端口标识;当该映射端口表中存在第二端口标识时,确定该映射端口表中存在与该第二端口标识对应的第一端口标识。当该映射端口表中不存在第二端口标识时,确定该映射端口表中不存在该第二端口标识对应的第一端口标识。
例如,参见表1,映射端口表中存储第一终端的端口标识和第二终端的端口标识的对应关系,第二终端的第二端口标识可以为755,则第一终端根据第二端口标识,从表1中获取第一端口标识为655。
表1
第一终端的端口标识 | 第二终端的端口标识 |
655 | 755 |
660 | 760 |
…… | …… |
在另一种可能的实现方式中,映射端口表中存储已分配的第一终端的端口标识、第二终端的端口标识和第二终端的终端标识的对应关系。相应的,本步骤可以为:第一终端确定该映射端口表中是否存在包括第二终端的终端标识和第二端口标识的对应关系记录,当该映射端口表中存在包括第二终端的终端标识和第二端口标识的对应关系记录,确定该映射端口表中存在与该第二端口标识对应的第一端口标识。当该映射端口表中不存在包括第二终端的终端标识和第二端口标识的对应关系记录,确定该映射端口表中不存在与该第二端口标识对应的第一端口标识。
例如,参见图2,映射端口表中存储第一终端的端口标识、第二终端的端口标识和第二终端的终端标识的对应关系,第二终端的第二端口标识可以为755,第二终端的终端标识可以为SN1,则第一终端根据第二终端标识和第二终端的终端标识,从表2中获取第一端口标识为655。
表2
第一终端的端口标识 | 第二终端的端口标识 | 第二终端的终端标识 |
655 | 755 | SN1 |
660 | 760 | SN2 |
…… | …… |
(2)当存在时,第一终端从该映射端口表中获取与该第二端口标识对应的第一端口标识,为该第二终端分配该第一端口标识对应的第一调试服务端口。
第一终端为该第二终端分配该第一端口标识对应的第一调试服务端口,从而可以为第二终端分配已经分配过的第一调试服务端口,保证了数据传输的可靠性。
(3)当不存在时,第一终端从该第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为该第二终端分配该第一调试服务端口。
需要说明的一点是,第一终端为第二终端分配第一调试服务端口之后,将第一调试服务端口的第一端口标识和第二调试服务端口的第二端口标识存储到映射端口表中,或者将第一调试服务端口的第一端口标识、第二调试服务端口的第二端口标识和第二终端的终端标识存储到映射端口表中,以便于后续第二终端再次运行该代码段时,第一终端直接根据该映射端口表为第二终端分配第一调试服务端口。
例如,继续参见图5,第一终端接收到第二终端发送的调试指令后,检测该调试指令中调试服务端口是否建立过映射关系,当建立过时,获取对应的第一终端的调试服务端口,当没有建立过映射关系时,重新分配第一终端的调试服务端口。
在步骤S407中,第一终端与第二终端基于该第二调试服务端口与第一调试服务端口建立web socket调试连接。
第一终端可以通过该web socket调试连接请求第二终端运行该代码段得到的运行状态信息。
例如,继续参见图5,第一终端与第二终端通过第一调试服务端口和第二调试服务端口建立web socket调试连接。
在步骤S408中,第二终端获取该代码段的运行状态信息。
第二终端获取该代码段中每条指令的运行状态信息,将该每条指令的运行状态信息组成该代码段的运行状态信息。其中,该代码段的运行状态信息包括第二终端当前显示的程序界面、代码段的运行统计数据或第二终端当前运行指令的地址信息中的至少一项。
需要说明的一点是,第二终端可以在运行完该代码段时,获取该代码段的运行状态信息;第二终端还可以在运行该代码段的过程中,每隔第一预设时长获取一次该代码段当前的运行状态信息。其中,第一预设时长可以为系统默认的也可以为用户设置的,在本公开实施例中,第一预设时长不作具体限定,例如,该第一预设时长可以为1ms、5ms、10ms等。
在步骤S409中,第二终端通过该web socket调试连接向该第一终端发送该运行状态信息。
在一种可能的实现方式中,第二终端在每次获取到该代码段的运行状态信息时,均通过该web socket调试连接向第一终端发送该运行状态信息。在另一种可能的实现方式中,第二终端还可以仅发送运行出错的运行状态信息,从而节省传输资源。相应的,本步骤可以为:第二终端根据该运行状态信息,确定运行该代码段是否出错,当根据该运行状态信息,确定运行该代码段出错时,第二终端向第一终端发送该运行状态信息。当根据该运行状态信息,确定运行该代码段没有出错时,不向第一终端发送该运行状态信息。
在另一种可能的实现方式中,第二终端可以周期性向第一终端发送运行状态信息。相应的,本步骤可以为:第二终端每隔第二预设时长向第一终端发送该运行状态信息,其中,第二预设时长和第一预设时长可以相同,也可以不相同。并且,该第二预设时长可以为系统默认的第二预设时长也可以为用户设置的第二预设时长,在本公开实施例中,对第二预设时长不作具体限定。
例如,继续参见图5,第二终端通过web socket调试连接向第一终端发送代码的运行状态信息。
在步骤S410中,第一终端通过该web socket调试连接接收该第二终端运行该代码段的运行状态信息。
第一终端接收到该运行状态信息后,在浏览器中显示该运行状态信息,技术人员可以根据该运行状态信息修改该代码段。第一终端向第二终端发送修改后的代码段,由第二终端运行该修改后的代码段,得到修改后的代码段的运行状态信息,并通过该websocket调试连接向第一终端返回该修改后的代码段的运行状态信息。
参见图5,开发人员根据第二终端通过web socket调试连接向第一终端发送代码的运行状态信息,对代码段进行修改,并将修改内容发送至第二终端,第二终端继续运行修改后的代码段,并向第一终端发送运行状态信息。
在本公开实施例中,在第二终端运行代码时,第一终端与第二终端通过第二调试服务端口与第一调试服务端口建立web socket调试连接,第二终端通过该web socket调试连接向第一终端发送代码段在第二终端的运行状态信息,使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
图6是根据本公开实施例示出的一种代码段运行方法的流程图,在本公开实施例中,以第二终端运行代码段的过程中,在第一终端上对该代码段中的指令进行修改,在第二终端上运行修改后的指令并得到运行结果为例进行说明。参见图6,该方法包括以下步骤:
在步骤S601中,在第二终端运行代码段的过程中,第一终端显示该代码段中的至少一条指令。
在第二终端运行该代码段的过程中,第一终端显示该代码段中的至少一条指令。获取到代码段之后,第一终端在操作界面中,显示该代码段中的至少一条指令,供技术人员查看。在操作界面中,还可以显示至少一个操作按钮,技术人员通过触发任一个操作按钮,可以对该代码段执行相应的操作。另外,操作界面为可编辑界面,技术人员还可以在操作界面中对任一条指令进行编辑操作,如删除指令的操作、修改指令的操作、添加指令的操作等。
第一种可能实现方式中,在第二终端运行代码段的过程中,第一终端可以静态显示该代码段中的至少一条指令,即显示的指令不会随着第二终端运行进度的变化而自动变化。
在此过程中,技术人员可以对第一终端显示的代码段进行编辑操作,或者通过上下滑动操作界面,控制第一终端切换显示的指令。
第二种可能实现方式中,在第二终端运行代码段的过程中,第一终端可以动态显示该代码段中的至少一条指令,即显示的指令会随着第二终端运行进度的变化而自动变化。
在第二终端运行代码段的过程中,确定当前运行指令的地址信息,通过websocket调试连接向第一终端发送该地址信息,第一终端通过该web socket调试连接接收该地址信息,根据该地址信息确定第二终端当前运行的指令。
此时,第一终端可以采用以下显示方式中的至少一种:
1、突出显示第二终端当前运行的指令,从而将当前运行的指令与其他指令区分开。该突出显示包括:加粗显示、高亮显示、采用预设的明亮颜色显示等。
2、可以默认在操作界面的指定位置显示第二终端当前运行的指令。
则随着第二终端当前运行的指令发生变化,第一终端会滚动显示代码段中的指令,使当前运行的指令固定显示于指定位置。其中,该指定位置为操作界面的顶部、中间位置或其他位置。
需要说明的是,在第二终端运行代码段的过程中,可以获取该代码段的运行状态信息,通过与第一终端之间的web socket调试连接,向第一终端发送该运行状态信息,第一终端通过web socket调试连接接收到运行状态信息时,显示该运行状态信息。其中,该运行状态信息用于表示代码段的运行状态,技术人员在第一终端上可以查看该运行状态信息,获知代码段的运行状态,了解代码段的运行进度。
其中,第一终端获取代码段的运行状态信息的过程可以通过步骤S408-S410实现,在此不再赘述。
关于代码段与运行状态信息的显示方式,在一种可能实现方式中,第一终端可以显示不同的界面,在第一界面中显示代码段,在第二界面中显示运行状态信息,技术人员可以在第一终端上触发切换界面的操作,查看代码段中的指令或者运行状态信息。
在另一种可能实现方式中,第一终端显示一个界面,该界面包括第一区域和第二区域,第一区域用于显示第二终端运行的代码段,第二区域用于显示第二终端发送的运行状态信息,技术人员可以在同一个界面中查看代码段中的指令或者运行状态信息。
且若第一终端动态显示代码段中的指令,第一区域中突出显示的指令与第二区域中的运行状态信息相互对应,如显示与该指令对应的程序界面截图、该指令的地址信息和第二终端运行该指令时统计到的数据。
在步骤602中,当第一终端检测到对至少一条指令中第一目标指令的断点设置操作时,通过与第二终端之间的web socket调试连接,向第二终端发送断点设置请求。
其中,第一终端与第二终端之间建立web socket调试连接的过程与步骤S403-S407中第一终端与第二终端之间建立web socket调试连接的过程相同,在此不再赘述。
在步骤603中,第二终端通过与第一终端之间的web socket调试连接,接收到第一终端发送的断点设置请求时,根据地址信息,为第一目标指令设置断点。
当第一终端通过web socket调试连接向第一终端发送断点设置请求时,第二终端通过该web socket调试连接接收该断点设置请求,该断点设置请求携带第一目标指令的地址信息,用于指示在该地址信息所在的位置设置断点。第二终端通过该web socket调试连接接收到第一终端发送的断点设置请求时,根据地址信息,为第一目标指令设置断点,以便第二终端运行第一目标指令的上一条指令后,也即是运行至断点所在的位置时,停止运行。
其中,断点设置操作可以为选中第一目标指令后点击操作界面中的断点设置按钮的操作,或者还可以为对第一目标指令的双击操作、长按操作等。
另外,为了提示断点所在的位置,第一终端还可以在第一目标指令所在的位置添加提示标记,该提示标记可以为光标、高亮显示标记或其他标记。
在一种可能实现方式中,该第一目标指令可以包括一条指令或多条指令,相应地,第一终端发送给第二终端的断点设置请求中可以携带一条指令的地址信息或多条指令的地址信息。第二终端接收到断点设置请求时,根据断点设置请求携带的地址信息,为该地址信息对应的指令设置断点。
例如,技术人员在第一终端显示的代码段中选中多条连续的指令,并触发点击断点设置按钮的操作,则第一终端检测到技术人员的操作时,通过与第二终端进行交互,为第二终端上的该多条连续的指令设置断点。
在步骤604中,当第二终端运行第一目标指令的上一条指令后,基于该断点停止运行。
第二终端在运行代码段的过程中,逐条运行代码段中的指令,直至代码段运行完成时停止运行,或者直至运行至断点时停止运行,或者直至运行至出现错误时停止运行。
在一种可能实现的方式中,为第一目标指令设置断点时,第二终端当前还未运行第一目标指令,即第二终端当前运行的指令在第一目标指令之前,此时第二终端继续运行代码段,直至运行第一目标指令的上一条指令后,基于为第一目标指令设置的断点停止运行。
在另一种可能实现的方式中,为第一目标指令设置断点时,第二终端已运行过第一目标指令,即第二终端当前运行的指令在第一目标指令之后。此时技术人员为了使第二终端运行至断点所在的位置时停止运行,可以在第一终端上触发重新运行操作。当第一终端检测到该重新运行操作时,通过web socket调试连接,向第二终端发送第二运行请求,该第二运行请求用于指示第二终端从代码段的第一条指令开始,重新运行代码段。则第二终端通过web socket调试连接接收第一终端通过web socket调试连接发送的第二运行请求,基于该第二运行请求,从代码段的第一条指令开始,重新运行代码段,直至运行第一目标指令的上一条指令后,基于为第一目标指令设置的断点停止运行。
在步骤605中,第一终端获取用于替代第一目标指令的第二目标指令。
当第二终端基于为第一目标指令设置的断点停止运行时,技术人员在第一终端上查看断点的提示标记或运行状态信息,从而获知当前第二终端运行至第一目标指令时停止运行。此时,技术人员在第一终端上输入用于替代第一目标指令的第二目标指令,第一终端获取第二目标指令。
需要说明的是,无论第一目标指令包括一条指令还是多条指令,该第二目标指令均可包括一条指令或多条指令,且第二目标指令中的指令数量与第一目标指令中的指令数据可以相等,也可以不等。
在一种可能实现的方式中,技术人员通过触发删除操作,将第一目标指令删除,通过触发输入操作将该第二目标指令输入至第一终端,由第一终端显示该第二目标指令。
在另一种可能实现的方式中,第二终端停止运行时,获取停止运行时到达的地址信息,即第一目标指令的地址信息,通过该web socket调试连接向第一终端发送此时的运行状态信息,该运行状态信息携带该地址信息,且用于表示第二终端已停止运行。第一终端通过该web socket调试连接接收第二终端发送的运行状态信息,根据运行状态信息确定第二终端在第一目标指令处停止运行,则显示输入窗口,供技术人员输入用于替代第一目标指令的第二目标指令,第一终端获取输入窗口中的第二目标指令。且该输入窗口中还可以显示第一目标指令,以便技术人员获知当前停止运行的是哪一条指令。
在步骤606中,第一终端通过web socket调试连接,向第二终端发送第一运行请求。
该第一运行请求携带第二目标指令,第一运行请求用于指示第二终端以第二目标指令作为第一目标指令的替代指令,继续运行代码段。该第一运行请求用于使第二终端运行第一终端获取的第二目标指令。
在步骤607中,第二终端通过web socket调试连接,接收第一终端发送的第一运行请求,以第二目标指令作为第一目标指令的替代指令,继续运行该代码段。
第二终端接收到第一终端发送的第一运行请求时,获取该第一运行请求携带的第二目标指令,以该第二目标指令作为第一目标指令的替代指令,继续运行该代码段。其中,以该第二目标指令作为第一目标指令的替代指令是指,第二终端之前运行第一目标指令的上一条指令后,不再运行第一目标指令,而是运行第二目标指令,在运行完第二目标指令之后,继续运行第一目标指令的下一条指令。
其中,当第二目标指令包括多条指令时,第二终端可以依次运行该多条指令,直至第二目标指令中的最后一条指令运行完成时,继续运行第一目标指令的下一条指令。
若运行该第二目标指令的过程中出现错误,则针对该出现的错误执行响应操作。该响应操作可以为基于该错误停止运行或者跳过该第二目标指令而继续运行第一目标指令的下一条指令等,且停止运行后,第二终端可以生成提示信息,该提示信息用于提示第二终端在运行第二目标指令的过程中出现错误,后续第二终端可以通过web socket调试连接将该提示信息发送给第一终端,由第一终端显示该提示信息,由技术人员根据该提示信息获知第二目标指令出现错误,后续可以根据该错误对第二目标指令继续进行修改。
需要说明的是,在上述步骤,604中为第一目标指令设置断点之后,或者在上述步骤607基于断点停止运行后又继续运行代码段之后,还可以取消为第一目标指令设置的断点。
在一种可能实现的方式中,技术人员在第一终端对第一目标指令触发断点取消操作,该断点取消操作用于指示第一终端取消为第一目标指令设置的断点。当第一终端检测到对第一目标指令的断点取消操作时,通过与第二终端之间的web socket调试连接,向第二终端发送断点取消请求,该断点取消请求携带第一目标指令的地址信息,用于指示第二终端取消为地址信息对应的第一目标指令设置的断点。第二终端通过web socket调试连接,接收第一终端发送的断点取消请求,根据该断点取消请求中携带的地址信息,取消为地址信息对应的第一目标指令设置的断点。
在取消为第一目标指令设置的断点以后,若第二终端运行第一目标指令的上一条指令后,不会停止运行,而是继续运行第一目标指令。
需要说明的第一点是,第二终端将第二目标指令作为第一目标指令的替代指令,继续运行代码段,可以得到修改后的代码段的运行结果,供技术人员查看,在此过程中未对代码段进行修改,第二终端仍可以保留原来的代码段。或者,第二终端在保留原来的代码段的情况下,根据第二目标指令和原来的代码段,采用第二目标指令替换第一目标指令,生成新的代码段。
需要说明的第二点是,在第二终端运行应用程序的过程中,可以将应用程序看做一个代码段,采用本公开实施例提供的方法运行该代码段。或者,应用程序中包括多个代码段,第二终端会依次运行多个代码段,每次运行至某一代码段的第一条指令时,通过该websocket调试连接,将当前的代码段发送给第一终端,由第一终端显示。
本公开实施例提供的方法,第一终端与第二终端建立web socket调试连接,在第二终端运行代码段的过程中,第一终端显示该代码段中的至少一条指令,当检测到对至少一条指令中第一目标指令的断点设置操作时,通过web socket调试连接向第二终端发送携带地址信息的断点设置请求,第二终端接收到该断点设置请求时,根据地址信息,为第一目标指令设置断点,当运行第一目标指令的上一条指令后,基于该断点停止运行,第一终端获取用于替代第一目标指令的第二目标指令,通过web socket调试连接向第二终端发送携带该第二目标指令的第一运行请求,第二终端接收该第一运行请求,以第二目标指令作为第一目标指令的替代指令,继续运行所述代码段。本公开实施例中,通过第一终端与第二终端之间建立的web socket调试连接进行交互,能够在第二终端运行代码段的过程中对代码段进行修改,操作便捷,并且能够以指令为单位进行修改,只需将修改后的指令发送给第二终端,无需发送修改后的整个代码段,降低了耗费的传输资源,缩短了传输时间。
图7是根据一示例性实施例示出的一种代码段运行装置的结构示意图。用于执行上述代码段运行方法中第一终端执行的步骤,如图7所示,该代码段运行装置包括:
确定模块701,用于当在第二终端中运行代码段时,确定第二终端的双连接通信协议web socket调试服务的第二调试服务端口和第一终端的web socket调试服务的第一调试服务端口;
第一建立模块702,用于根据第二调试服务端口和第一调试服务端口,与第二终端之间建立web socket调试连接;
第一接收模块703,用于通过web socket调试连接接收第二终端运行代码段的运行状态信息。
在一种可能实现的方式中,确定模块701,还用于接收第二终端发送的调试请求,调试请求携带第二调试服务端口的第二端口标识;确定第二端口标识对应的第二调试服务端口;根据第二端口标识,为第二终端分配第一调试服务端口。
在另一种可能实现的方式中,确定模块701,还用于确定映射端口表中是否存在与第二端口标识对应的端口标识;当存在时,从映射端口表中获取与第二端口标识对应的端口标识,为第二终端分配端口标识对应的第一调试服务端口;当不存在时,从第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为第二终端分配第一调试服务端口。
在另一种可能实现的方式中,装置还包括:
第一获取模块,当确定第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代第一目标指令的第二目标指令;
第一发送模块,用于通过web socket调试连接,向第二终端发送第一运行请求,第一运行请求携带第二目标指令,第一运行请求用于指示第二终端以第二目标指令作为第一目标指令的替代指令,继续运行代码段。
在另一种可能实现的方式中,装置还包括:
显示模块,用于显示代码段中的至少一条指令;
第二发送模块,用于当检测到对第一目标指令的断点设置操作时,通过websocket调试连接,向第二终端发送断点设置请求,断点设置请求携带第一目标指令的地址信息,用于指示第二终端为地址信息对应的第一目标指令设置断点,使第二终端运行第一目标指令的上一条指令后基于断点停止运行。
在另一种可能实现的方式中,装置还包括:
第三发送模块,用于当检测到对第一目标指令的断点取消操作时,通过websocket调试连接,向第二终端发送断点取消请求,断点取消请求携带第一目标指令的地址信息,用于指示第二终端取消为地址信息对应的第一目标指令设置的断点。
在另一种可能实现的方式中,装置还包括:
第四发送模块,用于当检测到重新运行操作时,通过web socket调试连接,向第二终端发送第二运行请求,第二运行请求用于指示第二终端从代码段的第一条指令开始,重新运行代码段。
在另一种可能实现的方式中,运行状态信息包括第二终端当前显示的程序界面、代码段的运行统计数据或第二终端当前运行指令的地址信息中的至少一项。
在本公开实施例中,在第二终端运行代码时,第一终端与第二终端通过第二调试服务端口与第一调试服务端口建立web socket调试连接,第二终端通过该web socket调试连接连接向第一终端发送代码段在第二终端的运行状态信息,使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
图8是根据一示例性实施例示出的一种代码段运行装置的结构示意图。用于执行上述代码段运行方法中第二终端执行的步骤,如图8所示,该代码段运行装置包括:
根据本公开实施例的第四方面,提供了一种代码段运行装置,应用于第二终端,装置包括:
第二建立模块801,用于当运行代码段时,与第一终端之间建立双连接通信协议web socket调试连接;
第二获取模块802,用于获取代码段的运行状态信息;
第五发送模块803,用于通过web socket调试连接向第一终端发送运行状态信息。
在一种可能实现的方式中,第二建立模块701,还用于向第一终端发送调试请求,调试请求携带第二终端的web socket调试服务的第二端口标识,以使第一终端为第二终端分配第一调试服务端口,并根据第一调试服务端口和第二端口标识对应的第二调试服务端口,建立与第一终端之间的web socket调试连接。
在另一种可能实现的方式中,装置还包括:
运行模块,用于运行代码段中第一目标指令的上一条指令后停止运行;
第二接收模块,用于通过web socket调试连接,接收第一终端发送的第一运行请求,第一运行请求携带用于替代第一目标指令的第二目标指令;
运行模块,还用于以第二目标指令作为第一目标指令的替代指令,继续运行代码段。
在另一种可能实现的方式中,装置还包括:
第三接收模块,用于在运行代码段的过程中,通过与第一终端之间的web socket调试连接,接收第一终端发送的断点设置请求,断点设置请求携带第一目标指令的地址信息,根据地址信息,为第一目标指令设置断点;
运行模块,还用于当运行至第一目标指令的上一条指令后,基于断点停止运行。
在另一种可能实现的方式中,运行模块,还用于继续运行代码段,直至运行第一目标指令的上一条指令后,基于断点停止运行;或者,
接收第一终端通过web socket调试连接发送的第二运行请求,基于第二运行请求,从代码段的第一条指令开始,重新运行代码段,直至运行第一目标指令的上一条指令后,基于断点停止运行。
在另一种可能实现的方式中,装置还包括:
第四接收模块,用于通过web socket调试连接,接收第一终端发送的断点取消请求,断点取消请求携带第一目标指令的地址信息;
取消模块,用于取消为地址信息对应的第一目标指令设置的断点。
在另一种可能实现的方式中,运行状态信息包括第二终端当前显示的程序界面、代码段的运行统计数据或第二终端当前运行指令的地址信息中的至少一项。
在本公开实施例中,在第二终端运行代码时,第一终端与第二终端通过第二调试服务端口与第一调试服务端口建立web socket调试连接,第二终端通过该web socket调试连接连接向第一终端发送代码段在第二终端的运行状态信息,使得技术人员可以在第一终端编写代码的同时,查看该代码段的运行状态信息,避免了技术人员反复查看第一终端与第二终端,提高了调试代码段的效率。
需要说明的是:上述实施例提供的代码段运行装置在运行代码段时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的代码段运行装置与代码段运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是根据一示例性实施例示出的一种终端900的框图。例如,终端900可以是移动电话,计算机,数字广播装置,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图9,终端900可以包括以下一个或多个组件:处理组件902,存储器904,电源组件906,多媒体组件908,音频组件910,输入/输出(I/O)的接口912,传感器组件914,以及通信组件916。
处理组件902通常控制终端900的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件902可以包括一个或多个处理器920来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理组件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。
存储器904被配置为存储各种类型的数据以支持在终端900的操作。这些数据的示例包括用于在终端900上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件906为终端900的各种组件提供电力。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为终端900生成、管理和分配电力相关联的组件。
多媒体组件908包括在所述终端900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当终端900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克风(MIC),当终端900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件910还包括一个扬声器,用于输出音频信号。
I/O接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件914包括一个或多个传感器,用于为终端900提供各个方面的状态评估。例如,传感器组件914可以检测到终端900的打开/关闭状态,组件的相对定位,例如所述组件为终端900的显示器和小键盘,传感器组件914还可以检测终端900或终端900一个组件的位置改变,用户与终端900接触的存在或不存在,终端900方位或加速/减速和终端900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件916被配置为便于终端900和其他设备之间有线或无线方式的通信。终端900可以接入基于通信标准的无线网络,如Wi-Fi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件916还包括近场通信(NFC)模块,以促进短程通信。
在示例性实施例中,终端900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述代码段运行方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器904,上述指令可由终端900的处理器920执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
还提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由第一终端的处理器执行时,使得第一终端能够执行上述实施例中的方法,所述方法包括:
当在第二终端中运行代码段时,确定第二终端的双连接通信协议web socket调试服务的第二调试服务端口和第一终端的web socket调试服务的第一调试服务端口;
根据第二调试服务端口和第一调试服务端口,与第二终端之间建立web socket调试连接;
通过web socket调试连接接收第二终端运行代码段的运行状态信息。
还提供了一种计算机可读存储介质,当计算机可读存储介质中的指令由第二终端的处理器运行时,使得第二终端能够运行上述实施例中的方法,方法包括:
当运行代码段时,与第一终端之间建立双连接通信协议web socket调试连接;
获取代码段的运行状态信息;
通过web socket调试连接向第一终端发送运行状态信息。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (30)
1.一种代码段运行方法,其特征在于,应用于第一终端,所述方法包括:
向第二终端发送待测试的代码段,以使在所述第二终端中运行所述代码段;
当在所述第二终端中运行代码段时,确定所述第二终端的双连接通信协议web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口;
根据所述第二调试服务端口和所述第一调试服务端口,与所述第二终端之间建立websocket调试连接;
通过所述web socket调试连接接收所述第二终端运行所述代码段的运行状态信息;
当确定所述第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代所述第一目标指令的第二目标指令;
通过所述web socket调试连接,向所述第二终端发送第一运行请求,所述第一运行请求携带所述第二目标指令,所述第一运行请求用于指示所述第二终端保留所述代码段,在本次运行中,以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第二终端的双连接通信协议web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口,包括:
接收所述第二终端发送的调试请求,所述调试请求携带所述第二调试服务端口的第二端口标识;
确定所述第二端口标识对应的所述第二调试服务端口;
根据所述第二端口标识,为所述第二终端分配第一调试服务端口。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二端口标识,为所述第二终端分配第一调试服务端口,包括:
确定映射端口表中是否存在与所述第二端口标识对应的端口标识;
当存在时,从所述映射端口表中获取与所述第二端口标识对应的端口标识,为所述第二终端分配所述端口标识对应的第一调试服务端口;
当不存在时,从所述第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为所述第二终端分配所述第一调试服务端口。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
显示所述代码段中的至少一条指令;
当检测到对所述第一目标指令的断点设置操作时,通过所述web socket调试连接,向所述第二终端发送断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,用于指示所述第二终端为所述地址信息对应的所述第一目标指令设置断点,使所述第二终端运行所述第一目标指令的上一条指令后基于所述断点停止运行。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当检测到对所述第一目标指令的断点取消操作时,通过所述web socket调试连接,向所述第二终端发送断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息,用于指示所述第二终端取消为所述地址信息对应的所述第一目标指令设置的断点。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到重新运行操作时,通过所述web socket调试连接,向所述第二终端发送第二运行请求,所述第二运行请求用于指示所述第二终端从所述代码段的第一条指令开始,重新运行所述代码段。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
8.一种代码段运行方法,其特征在于,应用于第二终端,所述方法包括:
接收第一终端发送的待测试的代码段;
当运行代码段时,与所述第一终端之间建立双连接通信协议web socket调试连接;
获取所述代码段的运行状态信息;
通过所述web socket调试连接向所述第一终端发送所述运行状态信息;
运行代码段中第一目标指令的上一条指令后停止运行;
通过所述web socket调试连接,接收所述第一终端发送的第一运行请求,所述第一运行请求携带用于替代所述第一目标指令的第二目标指令;
保留所述代码段,在本次运行中,以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
9.根据权利要求8所述的方法,其特征在于,所述与所述第一终端之间建立双连接通信协议web socket调试连接,包括:
向所述第一终端发送调试请求,所述调试请求携带所述第二终端的web socket调试服务的第二端口标识,以使所述第一终端为所述第二终端分配第一调试服务端口,并根据所述第一调试服务端口和所述第二端口标识对应的第二调试服务端口,建立与所述第一终端之间的web socket调试连接。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在运行所述代码段的过程中,通过与所述第一终端之间的web socket调试连接,接收所述第一终端发送的断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,根据所述地址信息,为所述第一目标指令设置断点;
所述运行代码段中第一目标指令的上一条指令后停止运行,包括:当运行至所述第一目标指令的上一条指令后,基于所述断点停止运行。
11.根据权利要求10所述的方法,其特征在于,所述当运行至所述第一目标指令的上一条指令后,基于所述断点停止运行,包括:
继续运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行;或者,
接收所述第一终端通过所述web socket调试连接发送的第二运行请求,基于所述第二运行请求,从所述代码段的第一条指令开始,重新运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
通过所述web socket调试连接,接收所述第一终端发送的断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息;
取消为所述地址信息对应的所述第一目标指令设置的断点。
13.根据权利要求8-12任一项所述的方法,其特征在于,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
14.一种代码段运行装置,其特征在于,应用于第一终端,所述装置包括:
确定模块,用于向第二终端发送待测试的代码段,以使在所述第二终端中运行所述代码段;当在所述第二终端中运行代码段时,确定所述第二终端的双连接通信协议websocket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口;
第一建立模块,用于根据所述第二调试服务端口和所述第一调试服务端口,与所述第二终端之间建立web socket调试连接;
第一接收模块,用于通过所述web socket调试连接接收所述第二终端运行所述代码段的运行状态信息;
第一获取模块,当确定所述第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代所述第一目标指令的第二目标指令;
第一发送模块,用于通过所述web socket调试连接,向所述第二终端发送第一运行请求,所述第一运行请求携带所述第二目标指令,所述第一运行请求用于指示所述第二终端以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
15.根据权利要求14所述的装置,其特征在于,
所述确定模块,还用于接收所述第二终端发送的调试请求,所述调试请求携带所述第二调试服务端口的第二端口标识;确定所述第二端口标识对应的所述第二调试服务端口;根据所述第二端口标识,为所述第二终端分配第一调试服务端口。
16.根据权利要求15所述的装置,其特征在于,
所述确定模块,还用于确定映射端口表中是否存在与所述第二端口标识对应的端口标识;当存在时,从所述映射端口表中获取与所述第二端口标识对应的端口标识,为所述第二终端分配所述端口标识对应的第一调试服务端口;当不存在时,从所述第一终端的调试服务端口中选择处于空闲状态的第一调试服务端口,为所述第二终端分配所述第一调试服务端口。
17.根据权利要求14所述的装置,其特征在于,所述装置还包括:
显示模块,用于显示所述代码段中的至少一条指令;
第二发送模块,用于当检测到对所述第一目标指令的断点设置操作时,通过所述websocket调试连接,向所述第二终端发送断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,用于指示所述第二终端为所述地址信息对应的所述第一目标指令设置断点,使所述第二终端运行所述第一目标指令的上一条指令后基于所述断点停止运行。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
第三发送模块,用于当检测到对所述第一目标指令的断点取消操作时,通过所述websocket调试连接,向所述第二终端发送断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息,用于指示所述第二终端取消为所述地址信息对应的所述第一目标指令设置的断点。
19.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第四发送模块,用于当检测到重新运行操作时,通过所述web socket调试连接,向所述第二终端发送第二运行请求,所述第二运行请求用于指示所述第二终端从所述代码段的第一条指令开始,重新运行所述代码段。
20.根据权利要求14-19任一项所述的装置,其特征在于,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
21.一种代码段运行装置,其特征在于,应用于第二终端,所述装置包括:
第二建立模块,用于接收第一终端发送的待测试的代码段;当运行代码段时,与所述第一终端之间建立双连接通信协议web socket调试连接;
第二获取模块,用于获取所述代码段的运行状态信息;
第五发送模块,用于通过所述web socket调试连接向所述第一终端发送所述运行状态信息;
运行模块,用于运行代码段中第一目标指令的上一条指令后停止运行;
第二接收模块,用于通过所述web socket调试连接,接收所述第一终端发送的第一运行请求,所述第一运行请求携带用于替代所述第一目标指令的第二目标指令;
所述运行模块,还用于以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
22.根据权利要求21所述的装置,其特征在于,
所述第二建立模块,还用于向所述第一终端发送调试请求,所述调试请求携带所述第二终端的web socket调试服务的第二端口标识,以使所述第一终端为所述第二终端分配第一调试服务端口,并根据所述第一调试服务端口和所述第二端口标识对应的第二调试服务端口,建立与所述第一终端之间的web socket调试连接。
23.根据权利要求21所述的装置,其特征在于,所述装置还包括:
第三接收模块,用于在运行所述代码段的过程中,通过与所述第一终端之间的websocket调试连接,接收所述第一终端发送的断点设置请求,所述断点设置请求携带所述第一目标指令的地址信息,根据所述地址信息,为所述第一目标指令设置断点;
所述运行模块,还用于当运行至所述第一目标指令的上一条指令后,基于所述断点停止运行。
24.根据权利要求23所述的装置,其特征在于,
所述运行模块,还用于继续运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行;或者,
接收所述第一终端通过所述web socket调试连接发送的第二运行请求,基于所述第二运行请求,从所述代码段的第一条指令开始,重新运行所述代码段,直至运行所述第一目标指令的上一条指令后,基于所述断点停止运行。
25.根据权利要求23所述的装置,其特征在于,所述装置还包括:
第四接收模块,用于通过所述web socket调试连接,接收所述第一终端发送的断点取消请求,所述断点取消请求携带所述第一目标指令的地址信息;
取消模块,用于取消为所述地址信息对应的所述第一目标指令设置的断点。
26.根据权利要求21-25任一项所述的装置,其特征在于,所述运行状态信息包括所述第二终端当前显示的程序界面、所述代码段的运行统计数据或所述第二终端当前运行指令的地址信息中的至少一项。
27.一种第一终端,其特征在于,所述终端包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
向第二终端发送待测试的代码段,以使在所述第二终端中运行所述代码段;当在所述第二终端中运行代码段时,确定所述第二终端的双连接通信协议web socket调试服务的第二调试服务端口和所述第一终端的web socket调试服务的第一调试服务端口;
根据所述第二调试服务端口和所述第一调试服务端口,与所述第二终端之间建立websocket调试连接;
通过所述web socket调试连接接收所述第二终端运行所述代码段的运行状态信息;
当确定所述第二终端运行代码段中第一目标指令的上一条指令后停止运行时,获取用于替代所述第一目标指令的第二目标指令;
通过所述web socket调试连接,向所述第二终端发送第一运行请求,所述第一运行请求携带所述第二目标指令,所述第一运行请求用于指示所述第二终端以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
28.一种第二终端,其特征在于,所述终端包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收第一终端发送的待测试的代码段;当运行代码段时,与所述第一终端之间建立双连接通信协议web socket调试连接;
获取所述代码段的运行状态信息;
通过所述web socket调试连接向所述第一终端发送所述运行状态信息;
运行代码段中第一目标指令的上一条指令后停止运行;
通过所述web socket调试连接,接收所述第一终端发送的第一运行请求,所述第一运行请求携带用于替代所述第一目标指令的第二目标指令;
以所述第二目标指令作为所述第一目标指令的替代指令,继续运行所述代码段。
29.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至7任一权利要求所述的代码段运行方法中所运行的操作。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求8至13任一权利要求所述的代码段运行方法中所运行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640147.1A CN109726129B (zh) | 2018-12-29 | 2018-12-29 | 代码段运行方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640147.1A CN109726129B (zh) | 2018-12-29 | 2018-12-29 | 代码段运行方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109726129A CN109726129A (zh) | 2019-05-07 |
CN109726129B true CN109726129B (zh) | 2022-08-12 |
Family
ID=66297991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811640147.1A Active CN109726129B (zh) | 2018-12-29 | 2018-12-29 | 代码段运行方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109726129B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111328155B (zh) * | 2020-02-27 | 2022-01-07 | Oppo广东移动通信有限公司 | 数据传输方法、装置、存储介质及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103929438A (zh) * | 2014-05-06 | 2014-07-16 | 中国联合网络通信集团有限公司 | 基于网页浏览器通信的防火墙穿越方法、设备和系统 |
CN105101324A (zh) * | 2014-04-30 | 2015-11-25 | 华为技术有限公司 | 异构网络切换方法、功能实体和终端 |
CN105847325A (zh) * | 2016-03-14 | 2016-08-10 | 广州酷狗计算机科技有限公司 | 应用客户端的调试方法及装置 |
CN108011883A (zh) * | 2017-12-05 | 2018-05-08 | 深圳市创维软件有限公司 | 一种远程调试方法、终端设备和服务器 |
CN108076123A (zh) * | 2016-11-11 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 网页调试方法、装置及系统 |
CN108197024A (zh) * | 2017-12-28 | 2018-06-22 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN108647028A (zh) * | 2018-05-09 | 2018-10-12 | 广州腾讯科技有限公司 | 应用程序信息处理方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8171346B2 (en) * | 2010-03-10 | 2012-05-01 | Microsoft Corporation | Client session based debugging |
US9201759B2 (en) * | 2013-07-26 | 2015-12-01 | Sap Se | Debugging applications in the cloud |
US9117019B2 (en) * | 2013-07-26 | 2015-08-25 | Sap Se | Debugging remote software applications across WAN connections |
US10095603B2 (en) * | 2017-01-09 | 2018-10-09 | International Business Machines Corporation | Pre-fetching disassembly code for remote software debugging |
CN107577611A (zh) * | 2017-11-01 | 2018-01-12 | 四川久远银海软件股份有限公司 | 应用调试装置与方法 |
-
2018
- 2018-12-29 CN CN201811640147.1A patent/CN109726129B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105101324A (zh) * | 2014-04-30 | 2015-11-25 | 华为技术有限公司 | 异构网络切换方法、功能实体和终端 |
CN103929438A (zh) * | 2014-05-06 | 2014-07-16 | 中国联合网络通信集团有限公司 | 基于网页浏览器通信的防火墙穿越方法、设备和系统 |
CN105847325A (zh) * | 2016-03-14 | 2016-08-10 | 广州酷狗计算机科技有限公司 | 应用客户端的调试方法及装置 |
CN108076123A (zh) * | 2016-11-11 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 网页调试方法、装置及系统 |
CN108011883A (zh) * | 2017-12-05 | 2018-05-08 | 深圳市创维软件有限公司 | 一种远程调试方法、终端设备和服务器 |
CN108197024A (zh) * | 2017-12-28 | 2018-06-22 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN108647028A (zh) * | 2018-05-09 | 2018-10-12 | 广州腾讯科技有限公司 | 应用程序信息处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109726129A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291626B (zh) | 数据存储方法和装置 | |
CN111221733B (zh) | 信息处理方法、装置、移动终端及存储介质 | |
CN112256563B (zh) | 安卓应用稳定性测试方法、装置、电子设备及存储介质 | |
CN109901886B (zh) | 页面语言切换方法、系统、装置和计算机可读存储介质 | |
CN110781080A (zh) | 程序调试方法及装置、存储介质 | |
CN115527603A (zh) | 一种硬盘性能测试方法、中央控制机及测试机 | |
CN105446854B (zh) | 功耗检测方法、系统及终端 | |
CN107562500B (zh) | 调试装置、方法及设备 | |
CN109684112B (zh) | 程序文件运行方法、装置、终端及存储介质 | |
CN110795354A (zh) | 信息处理方法、装置及存储介质 | |
CN109726129B (zh) | 代码段运行方法、装置、终端及存储介质 | |
CN111338961B (zh) | 应用调试方法及装置、电子设备及存储介质 | |
CN111935754A (zh) | Ap热点信道自动选择方法、装置、存储介质及终端设备 | |
CN110851370A (zh) | 程序测试方法及装置、存储介质 | |
CN114780334A (zh) | 功耗监测方法、功耗监测装置及存储介质 | |
CN113407368B (zh) | 进程管理方法、装置和电子设备 | |
CN111562994B (zh) | 应用程序接口转发方法、装置、电子设备及存储介质 | |
CN115408277A (zh) | 一种接口测试方法及装置 | |
CN109739763B (zh) | 代码段运行方法、装置、终端及存储介质 | |
CN114661606A (zh) | 程序调试方法、装置、电子设备及存储介质 | |
CN110888822B (zh) | 内存处理方法、装置及存储介质 | |
CN109947640B (zh) | 基于回归测试的核心功能覆盖度统计方法及装置 | |
CN112817844A (zh) | 后台进程驻留测试方法、装置、设备及存储介质 | |
CN113778687A (zh) | 内存分配信息处理方法、装置、电子设备及存储介质 | |
CN112383661A (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 |