CN111831538B - 调试方法、装置以及存储介质 - Google Patents

调试方法、装置以及存储介质 Download PDF

Info

Publication number
CN111831538B
CN111831538B CN201910313154.9A CN201910313154A CN111831538B CN 111831538 B CN111831538 B CN 111831538B CN 201910313154 A CN201910313154 A CN 201910313154A CN 111831538 B CN111831538 B CN 111831538B
Authority
CN
China
Prior art keywords
debugging
application
information
debugged
wireless connection
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
Application number
CN201910313154.9A
Other languages
English (en)
Other versions
CN111831538A (zh
Inventor
谢勇波
巫志文
林超
胡越
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910313154.9A priority Critical patent/CN111831538B/zh
Publication of CN111831538A publication Critical patent/CN111831538A/zh
Application granted granted Critical
Publication of CN111831538B publication Critical patent/CN111831538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种调试方法、装置以及存储介质;本申请实施例通过与调试主控端建立无线连接;通过所述无线连接从调试主控端获取待调试应用的应用信息,所述应用信息包括渲染引擎信息;在所述渲染引擎信息对应的渲染引擎上运行待调试应用;通过所述无线连接从调试主控端获取调试操作指令;基于所述渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;通过所述无线连接将调试结果发送给调试主控端,使得调试主控端显示所述调试结果。本实施例无需模拟待调试应用的运行环境,就可以对终端上运行的待调试应用进行调试。由此,该方案可以在真实的运行环境下调试待调试程序,从而提高调试的准确度。

Description

调试方法、装置以及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种调试方法、装置以及存储介质。
背景技术
调试(Debug)是指将编制完成的程序送入计算机中进行查错、排错、调整的过程。比如,常用的调试手段是使用个人电脑(Personal Computer,PC)上的调试软件,对正在运行的待调试程序进行测试。
然而,目前的调试方式准确度低。
发明内容
本申请实施例提供一种调试方法、装置以及存储介质,可以提高调试的准确度。
本申请实施例提供一种调试方法,包括:
与调试主控端建立无线连接;
通过所述无线连接从调试主控端获取待调试应用的应用信息,所述应用信息包括渲染引擎信息;
在所述渲染引擎信息对应的渲染引擎上运行待调试应用;
通过所述无线连接从调试主控端获取调试操作指令;
基于所述渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;
通过所述无线连接将调试结果发送给调试主控端,使得调试主控端显示所述调试结果。
在一些实施例中,所述渲染引擎包括调试组件和通信组件,基于所述渲染引擎对所述待调试应用执行调试操作指令对应的调试操作,得到调试结果,包括:
通过所述调试组件开启所述待调试应用的调试开关;
采用所述通信组件将所述调试操作指令拉取到调试组件中;
根据所述调试操作指令在调试组件中将待调试应用翻译为字节码;
执行所述字节码对应的操作,得到调试结果。
在一些实施例中,所述调试组件包括词法分析器、语法分析器以及字节码生成器,所述在调试组件中将待调试应用翻译为字节码,包括:
采用词法分析器对所述调试应用的代码字符进行词法分析,得到单词流;
采用语法分析器对所述单词流进行语法分析,得到对应的抽象语法树;
采用字节码生成器遍历所述抽象语法树,得到字节码。
在一些实施例中,采用所述通信组件将所述调试操作指令拉取到调试组件中,包括:
建立本地套接字,并通过所述无线连接获取调试主控端套接字;
检测所述调试主控端套接字;
当从所述调试主控端套接字检测到的检测数据为调试操作指令时,采用所述通信组件将调试操作指令通过本地套接字拉取到调试组件中。
在一些实施例中,所述与调试主控端建立无线连接,包括:
获取标识码;
对所述标识码进行解码操作,得到中转服务器地址信息和验证信息;
根据所述中转服务器地址信息向中转服务器发送验证信息;
当从中转服务器获得确认验证信息时,根据所述确认验证信息与调试主控端建立无线连接,所述确认验证信息包括调试主控端套接字。
在一些实施例中,根据所述确认验证信息与调试主控端建立无线连接,包括:
建立本地套接字,并确认所述确认验证信息中的调试主控端套接字;
通过所述本地套接字向中转服务器发送连接请求,所述连接请求包括调试主控端套接字;
当接收到从中转服务器返回的确认连接信息时,确认经由中转服务器与调试主控端成功建立无线连接。
在一些实施例中,确认经由中转服务器与调试主控端成功建立无线连接之后,还包括:
显示连接成功提示并显示调试页面;
当检测到基于针对所述调试页面的退出调试操作时,向调试主控端发送断连请求;
当获得同意断连信息后,关闭所述无线连接。
当检测到基于针对所述调试页面的信息查看操作时,向调试主控端发送查看请求;
当获得同意查看信息时,根据所述同意查看信息显示详细信息页面。
在一些实施例中,通过所述无线连接将调试结果发送给调试主控端之后,还包括:
通过所述无线连接向调试主控端发送调试结束报文;
当通过所述无线连接从调试主控端获得结束确认指令时,关闭所述无线连接;
当通过所述无线连接从调试主控端获得继续调试指令时,再次基于所述渲染引擎对待调试应用执行继续调试指令对应的调试操作,得到调试结果,并通过所述无线连接将调试结果发送给调试主控端。
本申请实施例还提供一种调试装置,包括:
连接单元,用于与调试主控端建立无线连接;
应用信息单元,用于通过所述无线连接从调试主控端获取待调试应用的应用信息,所述应用信息包括渲染引擎信息;
运行单元,用于在所述渲染引擎信息对应的渲染引擎上运行待调试应用;
调试操作指令单元,用于通过所述无线连接从调试主控端获取调试操作指令;
调试单元,用于基于所述渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;
发送单元,用于通过所述无线连接将调试结果发送给调试主控端,使得调试主控端显示所述调试结果。
本申请实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种调试方法中的步骤。
本申请实施例可以与调试主控端建立无线连接;通过所述无线连接从调试主控端获取待调试应用的应用信息,所述应用信息包括渲染引擎信息;在所述渲染引擎信息对应的渲染引擎上运行待调试应用;通过所述无线连接从调试主控端获取调试操作指令;基于所述渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;通过所述无线连接将调试结果发送给调试主控端,使得调试主控端显示所述调试结果。
在本申请中,调试主控端无需模拟待调试应用的虚拟运行环境,就可以通过无线连接对终端上安装的待调试应用进行远程的真机调试。由此,该方案可以在真实的运行环境下调试待调试应用,从而提高调试的准确度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的调试方法的场景示意图;
图1b是本申请实施例提供的调试方法的流程示意图;
图1c是本申请实施例提供的连接成功提示的页面示意图;
图1d是本申请实施例提供的调试页面的页面示意图;
图1e是本申请实施例提供的详细信息页面的页面示意图;
图1f是本申请实施例提供的通信组件的工作流程示意图;
图2a是本申请实施例提供的调试菜单页面的页面示意图;
图2b是本申请实施例提供的渲染引擎的组件结构示意图;
图2c是本申请实施例提供的WebSocket建立无线连接的流程示意图;
图2d是本申请实施例提供的Java环境下调试流程示意图;
图2e是本申请实施例提供的采用类装载器对字节码进行验证和装载的机制示意图;
图2f是本申请实施例提供的JVM内存结构示意图;
图3是本申请实施例提供的调试装置的结构示意图;
图4是本申请实施例提供的终端的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种调试方法、装置以及存储介质。
其中,该调试装置具体可以集成在被调试端中,该被调试端可以安装在搭载了安卓(Android)操作系统的电子设备上,比如终端、服务器等设备上,例如个人电脑(PersonalComputer,PC)、智能手机、电视盒子、平板电脑(Portable Android Device,Pad)、车载影音主机等等。
参考图1a,图中包括被调试端10、调试主控端20以及中转服务器30。其中,被调试端10作为被调试方(Debugee),调试主控端20作为调试方(Debugger)。
被调试端10可以经由中转服务器30与调试主控端20建立无线连接,该中转服务器30作为被调试端10与调试主控端20无线连接中的枢纽,可以传递被调试端10与调试主控端20之间的通信信息。
建立无线连接后,被调试端10可以通过该无线连接从调试主控端20处获取待调试应用的应用信息并根据该应用信息在渲染引擎上运行待调试应用。
当被调试端10接收到调试主控端20发送的调试指令操作时,被调试端10可以基于渲染引擎对该待调试应用进行调试指令操作对应的调试操作,从而得到调试结果,并将该调试结果发送给调试主控端20。
其中,调试主控端20可以为搭载在电子设备上,比如移动终端、服务器、个人电脑等。需要注意的是,被调试端10和调试主控端20可以搭载在同一电子设备上,比如,被调试端10与调试主控端20均搭载在中转服务器30上;再比如,被调试端10与调试主控端20均搭载在同一移动终端上,等等。另外,中转服务器30可以为中转服务器集群,该中转服务器集群可以包括一个或多个服务器。
目前的调试方式是调试主控端通过模拟待调试应用的运行环境,即通过使用一个可以模拟移动设备硬件的模拟器,来对调试主控端上运行的待调试应用进行调试。
但是由于安卓平台的碎片化严重、安卓模拟器性能有限,目前使用安卓模拟器调试安卓应用时,难以对安卓应用进行准确的查错、排错。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
在本实施例中,提供了一种调试方法,如图1b所示,该调试方法的具体流程可以如下:
101、与调试主控端建立无线连接。
无线连接指多个节点间不经由导体或缆线传播进行的远距离传输连接方式。比如,无线连接可以利用电磁波信号在自由空间中传播的特性进行信息交换。利用电磁波信号进行信息交换的方式多种,例如,通过无线局域网络、蜂巢式网络、行动卫星通信等等进行无线连接。
具体地,可以利用行动热点(Wireless-Fidelity,Wi-Fi)、光保真技术(Light-Fidelity,Li-Fi)、蓝牙(Bluetooth,BT)等技术进行无线连接。
除此之外,在一些实施例中,搭载被调试端的电子设备与搭载调试主控端的电子设备之间可以通过通用串行总线(Universal Serial Bus,USB)数据线进行传输连接,来解决电子设备不支持无线连接、无线连接传输速度不稳定等问题。
在一些实施例中步骤101的具体可以包括如下步骤:
(1)获取标识码。
标识码指搭载某信息或可以表明某特征的编码。标识码种类繁多,比如,根据标识码的表现形式可以划分为字符、图像、三维图像等。例如,图像标识码可以为二维码(2-Dimensional Bar Code),字符标识码可以为统一资源定位符(Uniform ResourceLocator,URL)等等。
其中,二维码可以包括QR码(Quick Response Code,QR Code),QR码可以用某种特定的几何图形按一定规律在平面上分布的图形来记录信息。具体地,QR码可以使用若干个与二进制相对应的几何形体来表示其搭载的信息,在一些实施例中,被调试端可以通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。
获取标识码的方法可以是被调试端从本地内存中直接读取标识码,或者从外部的内存中获取标识码。例如,被调试端可以从本地图像数据库中获取二维码;或者,通过网络与其他存储设备通信,获取URL信息。
又比如,在一些实施例中,为了降低用户获取标识码时的操作量,用户可以直接操控被调试端进行拍摄、扫描等操作来获取标识码。
(2)对标识码进行解码操作,得到中转服务器地址信息和验证信息。
在本实施例中,该标识码可以搭载中转服务器地址信息和验证信息,通过对标识码执行解码操作,可以从标识码中解析出中转服务器地址信息和验证信息。
其中,中转服务器可以在被调试端与调试主控端之间传递信息。进一步地,在一些实施例中,中转服务器还可以为被调试端、调试主控端提供信息服务,比如,为调试主控端提供定时传输、信息备份、信息统计等服务。
其中,中转服务器地址信息为携带了中转服务器的网络地址(websiteaddress)的信息。根据地址信息的类型分类,该地址信息可以划分为中转服务器的域名(Domain Name)地址、互联网协议(Internet Protocol,IP)地址,媒体访问控制(Media Access Control,MAC)地址等等。
其中,验证信息可以用于提升通信的安全性,验证信息的格式可以如表1所示:
消息ID 消息内容
0x01 A
表1
其中,消息ID中0x01指该信息为验证信息,消息内容为该严重信息所携带的消息。比如,该消息信息可以用于验证被调试端是否可以访问中转服务器;再比如,该消息信息可以用于验证被调试端与调试主控端之间是否可以进行无线连接。
比如,在一些实施例中,为了提高无线连接的安全性,验证信息的消息内容可以包括加密密钥(secret key),比如加密会话密钥、验证数字签名等等,被调试端可以通过该加密密匙与中转服务器通信,以便中转服务器根据该验证信息确定被调试端的身份。
比如,在一些实施例中,被调试端访问需要根据中转服务器地址信息对中转服务器进行访问,为了防止被调试端访问不安全的网络地址,提高访问的安全性,验消息内容可以包括身份信息,该身份信息可以用于确认标识码所携带的地址信息指向中转服务器。
例如,当被调试端解析出二维码中包括一段网络地址,却没有验证信息或验证信息不包含该网络地址的身份信息,此时被调试端可以显示网址风险提示。
(3)根据中转服务器地址信息向中转服务器发送验证信息。
在本实施例中,被调试端可以根据中转服务器地址信息得知中转服务器的网络地址,通过向该网络地址发送验证信息,使得中转服务器通知调试主控端建立并向中转服务器返回调试主控端套接字。
其中,套接字(socket)为网络通信过程中端点的抽象表示,套接字可以由连接使用的协议、本地主机的IP地址、本地进程的协议端口、远地主机的IP地址、远地进程的协议端口等信息组成。
比如,根据套接字的分类,可以将套接字划分为流式套接字、数据报套接字以及原始套接字等类型。
其中,流式套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流式套接字使用了传输控制协议(TheTransmission Control Protocol,TCP),从而实现可靠的数据服务。
其中,数据报套接字提供了一种无连接的服务。数据报套接字使用用户数据报协议(User Datagram Protocol,UDP)进行数据的传输。
其中,原始套接字允许对较低层次的协议直接访问,比如IP、ICMP协议,可以自如地控制Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以应用原始套接字来操纵网络层和传输层应用。
(4)当从中转服务器获得确认验证信息时,根据确认验证信息与调试主控端建立无线连接,确认验证信息包括调试主控端套接字。
确认验证信息的格式可以如表2所示:
消息ID origination destination
0x02 A B
表2
其中,消息ID中的0x02指该信息为确认验证信息,origination中的A为调试主控端的地址信息,destination中的B为被调试端的地址信息。
在一些实施例中,调试主控端的地址信息可以为调试主控端的域名地址、IP地址、MAC地址或调试主控端套接字信息等等。
在一些实施例中,确认验证信息可以包括调试主控端套接字信息,根据确认验证信息与调试主控端建立无线连接,包括:
a.建立本地套接字,并确认验证信息中的调试主控端套接字;
b.通过本地套接字向中转服务器发送连接请求,连接请求包括调试主控端套接字;
c.当接收到从中转服务器返回的确认连接信息时,确认经由中转服务器与调试主控端成功建立无线连接。
其中,连接请求的格式可以如表3所示:
消息ID origination destination
0x03 X Y
表3
其中,消息ID中的0x03指该信息为连接请求,origination中的X为被调试端套接字,destination中的Y为调试主控端套接字。
在一些实施例中,确认经由中转服务器与调试主控端成功建立无线连接之后,还可以进行以下步骤:
a.显示连接成功提示并显示调试页面;
b.当检测到基于针对调试页面的退出调试操作时,向调试主控端发送断连请求;
c.当获得同意断连信息后,关闭无线连接;
d.当检测到基于针对调试页面的信息查看操作时,向调试主控端发送查看请求;
e.当获得同意查看信息时,根据同意查看信息显示详细信息页面。
其中,连接成功提示为提示连接成功的图像或字符等信息,图1c是连接成功提示的页面示意图,在一些实施例中,连接成功提示可以如图1c所示,包含提示连接成功的文字信息。
其中,基于针对调试页面的信息查看操作具有多种,比如,可以为对调试页面的触摸、滑动等操作,也可以是触发调试页面上的退出控件,退出控件可以以按钮、输入框、链接的形式在调试页面上显示。
其中,调试页面可以包含被调试端的调试信息,图1d是调试页面的页面示意图,调试页面可以包含当前无线连接网络延迟信息、调试主控端信息、查看信息按钮以及退出调试按钮,当检测到用户触摸该退出调试按钮时向调试主控端发送查看请求。
其中,查看请求的格式可以如表4所示:
消息ID origination destination pass 消息内容
0x04 C D E F
表4
其中,消息ID中的0x04指该信息为查看请求,origination中的C为被调试端套接字,destination中的D为调试主控端套接字,pass中的E为中转服务器的地址信息,消息内容中的F为被调试端具体需要查看的对象。
其中,同意查看信息的格式可以如表5所示:
消息ID origination destination pass 消息内容
0x05 G H I J
表5
其中,消息ID中的0x05指该信息为同意查看信息,origination中的G为被调试端套接字,destination中的H为调试主控端套接字,pass中的I为中转服务器的地址信息,消息内容中的J为被调试端需要查看对象的详细内容。
详细信息页面可以包括被调试端需要查看对象的详细内容,比如,当查看对象为调试主控端时,该详细信息页面可以包括调试主控端的型号信息、地址信息、距离信息等等。
例如,如图1e所示,提供了一种详细信息页面的页面示意图,该详细信息页面中包括调试主控端的型号信息和地址信息。
102、通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息。
待调试应用指需要进行调试的应用程序,根据移动端系统的分类,该应用程序可以划分为iOS应用、安卓(Android)应用、windows应用等等。
待调试应用的应用信息可以包括待调试应用的应用名称、数据大小、开发商、版本号、支持平台等等。
渲染引擎(graphic engine)为支持应用图形渲染的底层函数库。渲染引擎可以由封装好的硬件操作和图形算法组成,用于在电子设备上将编写的文本以及相应的资料文件转换成图像。例如,常用的渲染引擎可以包括Gecko、Webkit、Blink、Tridend等等。
渲染引擎信息可以包括渲染引擎的名称、数据大小、开发商、版本号、支持平台等信息。
103、在渲染引擎信息对应的渲染引擎上运行待调试应用。
当获取了待调试应用的应用信息,确定了渲染引擎信息后,可以在被调试端上查找应用信息对应的待调试应用和渲染引擎,并且在渲染引擎上运行该待调试应用。
在一些实施例中,待调试应用为即时通信应用上的子应用,比如,待调试应用可以为小程序,小程序在渲染引擎上运行时可以具有两个线程,分别为视图线程(View Thread)和应用服务线程(AppService Thread),两个线程相互隔离,并通过桥接协议进行通信。
其中,视图线程可以在一个或多个视图层内进行,应用服务线程可以在逻辑层内进行,逻辑层可以将数据变化拉取到视图层,触发视图层页面更新,视图层可以将触发的事件拉取逻辑层进行业务处理。
在一些实施例中,在渲染引擎信息对应的渲染引擎上运行待调试应用之前,需要判断被调试端是否已安装应用信息对应的待调试应用和渲染引擎。比如,通过查询本地已安装应用与渲染引擎中,是否包括应用信息对应的待调试应用和渲染引擎。
当被调试端未安装应用信息对应的待调试应用和渲染引擎时,在一些实施例中,为了降低无线连接的数据吞吐量,可以查询本地是否具有应用信息对应的待调试应用和渲染引擎的安装包。
当本地内存中具有应用信息对应的待调试应用和渲染引擎的安装包时,通过安装包安装待调试应用和渲染引擎。
当本地内存中不具有应用信息对应的待调试应用和渲染引擎的安装包时,需要获取待调试应用和渲染引擎的安装包。
获取待调试应用和渲染引擎的安装包的方式具有多种,比如,可以为通过无线连接从中转服务器获得;比如,还可以为通过无线连接经由中转服务器从调试主控端获得;比如,还可以通过网络从网络服务器或其他终端处获得,等等。
104、通过无线连接从调试主控端获取调试操作指令。
其中,调试操作指令的格式可以如表6所示:
消息ID 消息内容
0x06 K
表6
消息ID中的0x06指该信息的类型为调试操作指令类型,消息内容中的K为调试操作指令。
105、基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果。
其中,调试操作指令对应的调试操作可以指调试过程中差错和排错的手段。比如,调试操作可以包括执行本行代码、执行本行代码并跳到下一行、跳出本行代码、执行到下一断点、直行到目标代码,等等。
其中,调试结果可以包括日志信息、变量信息、断点信息、堆栈信息,等等。
在一些实施例中,渲染引擎包括调试组件和通信组件,步骤105的具体可以包括如下步骤:
(1)通过调试组件开启待调试应用的调试开关。
其中,渲染引擎中的调试组件可以为在该渲染引擎上运行的应用提供调试服务,该组件可以由解释器、布局(layout)、绘图模块等等组成。
一般地,被调试端中安装的待调试应用的调试状态默认为关闭,不能进行调试。故在一些实施例中,需要通过调试组件开启待调试应用的调试开关。
(2)采用通信组件将调试操作指令拉取到调试组件中。
其中,渲染引擎中的通信组件可以协调调试主控端与被调试端之间的数据收发。
比如,在一些实施例中,采用通信组件将调试操作指令拉取到调试组件中可以具体包括如下步骤:
a.建立本地套接字,并通过无线连接获取调试主控端套接字;
b.检测调试主控端套接字;
c.当从调试主控端套接字检测到的检测数据为调试操作指令时,采用通信组件将调试操作指令通过本地套接字拉取到调试组件中。
其中,当调试主控端连接上该通信组件后,通信组件可以作为调试主控端与调试组件之间的消息中转方。
比如,图1f提供了一种通信组件的工作流程示意图,如图所示,通信组件将来自调试主控端套接字处的通信数据通过本地套接字发送给调试组件,或者,调试组件通过该通信组件,将通信数据通过本地套接字发送给调试主控端。
在一些实施例中,通信组件可以采用Websocket、inspect、TCP/IP等协议进行中转工作。
(3)根据调试操作指令在调试组件中将待调试应用翻译为字节码。
其中,字节码(Byte-code)是一种包含执行程序、由一序列代码/数据组成的二进制文件。
在一些实施例中,调试组件包括词法分析器、语法分析器以及字节码生成器,在调试组件中将待调试应用翻译为字节码可以具体包括如下步骤:
a.采用词法分析器对待调试应用的代码字符进行词法分析,得到单词流。
b.采用语法分析器对单词流进行语法分析,得到对应的抽象语法树。
c.采用字节码生成器遍历抽象语法树,得到字节码。
其中,词法分析器(Lexical analyzer,Lexer)可以将程序的字符序列转换为单词流(Token),词法分析器一般以函数的形式存在。
词法分析可以基于有限状态自动机(Finite State Automaton,FSA)来识别其所能处理的标记中可能包含的所有字符序列(单个字符序列也被称为语素)。其中,FSA是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型,FSA可以拥有有限数量的状态,每个状态可以迁移到零或多个状态,输入的字串可以决定FSA执行哪个状态的迁移。
在词法分析时,词法分析器可以不断地被语法分析器调用,每调用一次词法分析器将从待调试应用程序的字符序列拼出一个单词,将其保存在单词流中,并将其单词流发送给语法分析器。词法分析器还可以一次扫描全部单词,并将所有的单词流发送给语法分析器。
例如,词法分析器可以对待调试应用程序中的当前字符进行字符扫描,判断该字符是否为空格,若是空格则继续扫描下一个字符,直到扫描出的字符不是空格,再判断这个字符是否为字母,若是则进行标识符和保留字的识别;然后,判断这个字符是否为数字,若是则对该字符进行数字的判断;否则,依次对这个字符可能的情况进行判断,当无法判定时则认定该字符为错误符号,输出该错误符号,并结束扫描。
每次成功识别了一个单词后,单词都会被保存在单词流(函数式token[])中,确定该单词的种别码后进行下一个单词的识别。
识别的具体步骤是,对单词的种别码(函数式syn)进行判断,对于不同的单词种别做出不同的反应。
其中,语法分析器(Parser)可以进行语法验证并构建由输入的单词流所组成的数据结构(比如,构建语法分析树、抽象语法树等数据结构)。语法分析器可以将词法分析器生成的单词流作为其输入。
其中,抽象语法树(Abstract Syntax Tree,AST)是待调试应用代码语法结构的一种抽象表示。AST可以以树状的形式表现编程语言的语法结构,树上的每个节点都表示待调试应用代码中的一种结构。
其中,字节码生成器可以对抽象语法树进行遍历,遍历后得到的数值可以保存在字节码中。
(4)执行字节码对应的操作,得到调试结果。
在一些实施例中,为了迅速启动并执行,省区编译的时间,调试组件可以每生成一条字节码,就对该对字节码进行逐条解释执行。
在一些实施例中,为了保证整体的执行速度,调试组件可以将生成的所有字节码,一次性执行。
在在一些实施例中,为了迅速启动、执行,并保证整体的执行速度,调试组件可以将其中多次解释执行的字节码认定为热点代码(Hot Spot Code),为了提高热点代码的执行效率,在运行时,调试组件可以将这些代码编译成与本地平台相关的机器码,并进行各层次的优化。
106、通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。
其中,调试结果的格式可以如表7所示:
消息ID origination destination pass 消息内容
0x07 L M N O
表7
其中,消息ID中的0x07指该信息为调试结果,origination的L指被调试端的地址信息,destination的M指调试主控端的地址信息,pass的N可以指中转服务器的地址信息,消息内容中的O指具体的调试结果。
比如,在一些实施例中,调试主控端显示调试结果之后还可以实施以下步骤:
(1)通过无线连接向调试主控端发送调试结束报文。
(2)当通过无线连接从调试主控端获得结束确认指令时,关闭无线连接。
(3)当通过无线连接从调试主控端获得继续调试指令时,再次基于渲染引擎对待调试应用执行继续调试指令对应的调试操作,得到调试结果,并通过无线连接将调试结果发送给调试主控端。
其中,关闭无线连接的具体方式可以是直接释放本地套接字、销毁数据等等,也可以是停止本地套接字的发送功能,同时继续开放本地套接字的接收功能,以保证关闭无线连接时不产生数据丢失,当需要再次数据传输时,也不需要重新建立本地套接字,可以降低无线连接时计算资源的消耗,提高调试速率。
本申请实施例提供的调试方法可以应用在各种安卓应用的调试场景中,比如,以调试安卓小程序为例,该安卓小程序为即时通信客户端的子应用,安卓手机上搭载有该即时通信客户端以及调试装置,个人电脑上搭载有调试主控端,调试装置可以与调试主控端建立无线连接,并通过无线连接从调试主控端下载并安装安卓小程序及其对应的渲染引擎;当用户通过调试主控端下达调试操作指令时,调试装置可以通过无线连接从调试主控端获取该调试操作指令,并基于渲染引擎对安卓小程序执行对应的调试操作,得到调试结果,最后通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。
采用本申请实施例提供的方案能够对安卓手机上安装的安卓小程序进行远程的真机调试,从而克服安卓平台碎片化严重、安卓模拟器性能有限等问题,同时,通过无线连接的方式调试可以为调试人员提供便利。由此,该方案可以在真实的运行环境下调试待调试应用,从而提高调试的准确度。
由上可知,在本申请中通过与调试主控端建立无线连接;通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息;在渲染引擎信息对应的渲染引擎上运行待调试应用;通过无线连接从调试主控端获取调试操作指令;基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。,调试主控端无需模拟待调试应用的虚拟运行环境,就可以通过无线连接对终端上安装的待调试应用进行远程的真机调试。由此,该方案可以在真实的运行环境下调试待调试应用,从而提高调试的准确度。
根据上述实施例所描述的方法,以下将作进一步详细说明。
在本实施例中,终端搭载在安卓系统的智能手机上、调试主控端搭载在windows系统的个人电脑上,终端和调试主控端通过中转服务器进行无线通信,调试主控端可以对智能手机上即时通信应用的小游戏进行调试,该即时通信应用的服务器可以作为中转服务器。
其中,即时通信应用的小游戏是即时通信应用上的子应用,即一种小程序,
其中,即时通信应用是一种通过即时通信技术来实现在线聊天、交流的应用软件。即时通信应用可以基于客户端/服务器架构(Client/Server,C/S),当采用C/S架构时,用户使用即时通信应用之前可以预先下载安装该即时通信应用的客户端;即时通信应用还可以采用浏览器/服务器(Browser/Server,B/S)架构,直接借助互联网为媒介、客户端无需安装就可以使用。
小游戏作为小程序的一类,其代码使用Java语言,相比于小程序,小游戏没有层叠样式表(英文全称:Cascading Style Sheets,CSS)、超文本标记语言(Hyper Text MarkupLanguage,HTML)、多页面等内容,但增加了更多的图像渲染、文件系统以及后台多线程(multithreading)的功能。
比如,在本实施例中,需要通过调用大量的(Web Graphics Library,WebGL)的绘图应用程序编程接口(Application Programming Interface,API)对小游戏进行图像渲染,为了保证游戏画面流畅,本实施例中的小游戏需要每秒要绘制60帧的图像,故进行小游戏调试时,对调试环境的性能要求高,在安卓模拟器下很难流畅地运行小游戏,且无法真实反映实际环境下的小游戏运行的情况,故本实施例中,技术人员将通过个人电脑上的调试主控端对智能手机上运行的小游戏进行调试。
以下将以用户操控终端与调试主控端来对终端进行小游戏调试为例,对本发明实施例的方法进行详细说明,具体流程如下:
一、与调试主控端建立无线连接。
在本实施例中,用户可以通过二维码的方式来建立个人电脑上调试主控端与智能手机上被调试端之间的无线连接。
首先,调试主控端可以显示调试菜单页面,图2a提供了一种调试菜单页面的页面示意图,如图2a所示,该调试菜单页面可以包括目标程序控件、远程调试控件等等,用户可以通过点击目标程序控件,来选取本地的小游戏程序代码,然后,用户可以通过点击远程调试控件来启动远程调试功能。
用户点击远程调试控件后,调试主控端可以将本地的小游戏程序代码封装并上传到中转服务器,并根据服务器返回的该小游戏程序代码对应的验证信息,以及调试主控端的地址信息生成QR二维码,调试主控端可以跳转至二维码页面显示该QR二维码。
智能手机上的即时通信应用上可以具有扫描控件,用户通过点击该扫描控件即可开启智能手机的拍摄功能。当用户通过智能手机拍摄该的QR二维码后,可以对该QR二维码进行解析,得到QR二维码携带的验证信息,以及调试主控端的地址信息,调试主控端向中转服务器发送该验证信息以及调试主控端的地址信息,当得到中转服务器的确认验证信息时,即可根据确认验证信息与调试主控端建立无线连接。
具体地,小游戏远程调试采用的渲染引擎为安卓平台内置的浏览器Chorme,该渲染引擎的组件结构示意图如图2b所示,包括绘图组件webGL接口、画布组件Canvas、通信组件Inspector协议以及调试组件V8。
其中,webGL是一种绘图协议,该绘图技术标准可以将OpenGL与JavaScript绑定,来为Canvas提供硬件图形加速渲染,从而借助系统显卡来在浏览器里流畅地显示绘制的图形画面。
其中,JavaScript一种直译式脚本语言,其解释器作为浏览器的一部分被称为JavaScript引擎。
其中,Canvas可以作为画布通过JavaScript来绘制图形。在画布上,JavaScript可以绘制图形,Canvas可以对图形逐像素地进行渲染。
其中,Inspector协议可以允许第三方对小游戏进行远程调试,Inspector协议利用WebSocket建立连接调试主控端和渲染引擎间的无线通道。
相比于其他建立连接调试主控端和渲染引擎间的无线通道的方式,WebSocket在第一次建立无线通道后,后续的数据交换都不用再重新发送通信请求,可以节省无线通信的带宽资源。除此之外,由于WebSocket的连接是双向通信的连接,在同一个无线连接上,既可以发送,也可以接收,可以提高信息收发的效率。
例如,图2c是WebSocket建立无线连接的流程示意图,其具体流程是,被调试端向调试主控端发送连接请求,接收到调试主控端发送的确认连接信息时,被调试端就可以确认经由中转服务器与调试主控端成功建立无线连接。
二、通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息,并在渲染引擎上运行待调试应用。
在本实施例中,被调试端可以直接通过无线连接从调试主控端获取其下发的小游戏程序代码、渲染引擎以及调试主控端套接字。
下载并安装完成后,在渲染引擎上运行该小游戏。
此时,被调试端可以根据Inspector协议创建本地套接字,然后,通过本地套接字向中转服务器发送一个包含连接调试主控端套接字的请求;当接收到从中转服务器返回的确认请求信息时,确认调试主控端通过本地套接字连接上渲染引擎,Inspector协议可以作为中转枢纽,将调试主控端发送的调试信息通过本地套接字连拉取到调试组件中,也可以将调试组件生成的调试结果通过本地套接字发送给调试主控端。
三、开始调试。
调试主控端可以将用户下达的调试操作指令下发给被调试端,被调试端可以基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果。
具体地,图2d是Java环境下调试流程示意图,如图2d所示,基于安卓平台的即时通信应用小游戏可以在Java环境下进行调试,其中,其具体步骤如下:
(1)采用Java编译器将小游戏程序代码编译为字节码;
(2)采用类装载器对字节码进行验证和装载;
(3)采用Java虚拟机(Java Virtual Machine,JVM)执行字节码。
其中,Java编译器包括词法分析器、语法分析器、字节码生成器,采用Java编译器将小游戏程序代码编译为字节码的具体步骤如下:
a.采用词法分析器对调试应用的代码字符进行词法分析,得到单词流;
b.采用语法分析器对单词流进行语法分析,得到对应的抽象语法树;
c.采用字节码生成器遍历抽象语法树,得到字节码。
最后生成的字节码由以下部分组成:
①结构信息:包括字节码文件格式版本号及各部分的数量与大小的信息;
②元数据:对应于小游戏代码中声明与常量的信息,包含类、继承的超类、实现的接口的声明信息、域与方法声明信息、常量池等信息;
③方法信息:对应小游戏代码中语句和表达式对应的信息,包含字节码、异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号等信息。
其中,采用类装载器对字节码进行验证和装载的机制示意图可以参考图2e,类装载器的层次关系和加载顺序如图所示。
其中,启动类加载器(BootstrapClassLoader)在JVM运行时被创建,负责加载存放在Java语言的软件开发工具包安装目录下的jre\lib的类文件,或者被-Xbootclasspath参数指定的路径中,并且能被虚拟机识别的类库。
其中,扩展类加载器(Extension ClassLoader)负责加载Java语言的软件开发工具包安装目录下的\jre\lib\ext的类,或者由java.ext.dirs系统变量指定路径中的所有类库,开发者也可以直接使用扩展类加载器。
其中,应用程序类加载器(AppClassLoader)负责加载用户类路径(Classpath)所指定的类,开发者可以直接使用该类加载器,如果应用程序中没有定义过自己的类加载器,该类加载器为默认的类加载器。
其中,JVM自带的类加载器是从本地文件系统加载标准的java class文件,而用户自定义类加载器(User ClassLoader)可以做到在执行非置信代码之前,自动验证数字签名,动态地创建符合用户特定需要的定制化构建类,从特定的场所(数据库、网络中)取得java class。
采用类装载器对字节码进行验证与装载的过程中,会先验证类是否被已加载,验证顺序是自底向上,从用户自定义类加载器到启动类加载器逐层验证,只要某个类加载器已加载就视为已加载此类,从而保证此类只所有类加载器加载一次。而加载的顺序是自顶向下,即由上层来逐层尝试加载此类。
其中,JVM是基于堆栈的虚拟机。JVM为每个新创建的线程都分配一个堆栈,即,对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。堆栈以帧为单位保存线程的状态。JVM可以对堆栈进行以帧为单位的压栈和出栈操作。
比如,如图2f所示,JVM内存结构可以包含方法区、Java堆、Java栈、本地方法栈、指令计数器及其他隐含寄存器等等。
其中,Java堆在虚拟机启动时被创建,可以被进程的所有线程共享。Java堆用于存放对象实例,对象实例可以在这里分配内存。
其中,方法区用于存储被Java虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
其中,本地方法栈可以为虚拟机使用到的Native方法服务。
采用JVM执行字节码时,字节码可以被解释器解释执行,或是被即时代码发生器有选择的转换成机器码执行,其具体步骤如下:
JVM线程创建后可以产生程序计数器(PC)和栈(Stack)。其中,程序计数器存放下一条要执行的指令在方法内的偏移量,栈中存放栈帧,每个栈帧对应着每个方法的每次调用;而栈帧可以具有局部变量区和操作数栈,其中,局部变量区用于存放方法中的局部变量和参数,操作数栈中用于存放方法执行过程中产生的中间结果。
通过JVM后,字节码可以被执行并生成其对应的调试结果。
四、通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。
在本实施例中,可以包括日志信息、变量信息、断点信息、堆栈信息,等等。
通过无线连接将调试结果发送给调试主控端的方式可以参考步骤106,在此不做赘述。
由上可知,本申请实施例中被调试端与调试主控端建立无线连接;通过无线连接从调试主控端下载并安装小游戏、渲染引擎,并在渲染引擎上运行小游戏;通过无线连接从调试主控端获取调试操作指令,并基于渲染引擎对小游戏执行调试操作指令对应的调试操作,得到调试结果;最后通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。由于调试主控端无需通过安卓模拟器进行小游戏调试,而是通过无线连接对终端上安装的小游戏进行远程的真机调试。由此,该方案可以在真实的运行环境下调试待调试应用,从而提高调试的准确度。
为了更好地实施以上方法,本申请实施例还提供一种调试装置,该调试装置具体可以集成在电子设备中,该电子设备可以为终端、服务器、个人电脑等设备。比如,在本实施例中,将以调试装置集成在移动终端上为例,对本发明实施例的方法进行详细说明。
例如,如图3所示,该调试装置可以包括连接单元301、应用信息单元302、运行单元303、调试操作指令单元304、调试单元305以及发送单元306如下:
(一)连接单元301。
连接单元301,用于与调试主控端建立无线连接。
在一些实施例中,连接单元301可以包括获取子单元、解码子单元、验证子单元和确认子单元,具体如下:
(1)获取子单元。
获取子单元,用于获取标识码。
(2)解码子单元。
解码子单元,用于对标识码进行解码操作,得到中转服务器地址信息和验证信息。
(3)验证子单元。
验证子单元,用于根据中转服务器地址信息向中转服务器发送验证信息。
(4)确认子单元。
确认子单元,用于当从中转服务器获得确认验证信息时,根据确认验证信息与调试主控端建立无线连接,确认验证信息包括调试主控端套接字。
在一些实施例中,确认子单元具体可以用于执行以下步骤:
a.建立本地套接字,并确认验证信息中的调试主控端套接字;
b.通过本地套接字向中转服务器发送连接请求,连接请求包括调试主控端套接字;
c.当接收到从中转服务器返回的确认连接信息时,确认经由中转服务器与调试主控端成功建立无线连接。
在一些实施例中,确认子单元确认经由中转服务器与调试主控端成功建立无线连接之后,具体还可以用于执行以下步骤:
a.显示连接成功提示并显示调试页面;
b.当检测到基于针对调试页面的退出调试操作时,向调试主控端发送断连请求;
c.当获得同意断连信息后,关闭无线连接。
d.当检测到基于针对调试页面的信息查看操作时,向调试主控端发送查看请求;
e.当获得同意查看信息时,根据同意查看信息显示详细信息页面。
(二)应用信息单元302。
应用信息单元302,用于通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息。
(三)运行单元303。
运行单元303,用于在渲染引擎信息对应的渲染引擎上运行待调试应用。
(四)调试操作指令单元304。
调试操作指令单元304,用于通过无线连接从调试主控端获取调试操作指令。
(五)调试单元305。
调试单元305,用于基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果。
在一些实施例中,渲染引擎包括调试组件和通讯组件,调试单元305具体可以包括开关子单元、拉取子单元、翻译子单元和执行子单元:
(1)开关子单元。
开关子单元,用于通过调试组件开启待调试应用的调试开关。
(2)拉取子单元。
拉取子单元,用于采用通讯组件将调试操作指令拉取到调试组件中。
在一些实施例中,拉取子单元具体可以执行以下步骤:
a.建立本地套接字,并通过无线连接获取调试主控端套接字;
b.检测调试主控端套接字;
c.当从调试主控端套接字检测到的检测数据为调试操作指令时,采用通讯组件将调试操作指令通过本地套接字拉取到调试组件中。
(3)翻译子单元。
翻译子单元,用于根据调试操作指令在调试组件中将待调试应用翻译为字节码。
在一些实施例中,调试组件包括词法分析器、语法分析器以及字节码生成器,翻译子单元具体可以执行以下步骤:
a.采用词法分析器对调试应用的代码字符进行词法分析,得到单词流;
b.采用语法分析器对单词流进行语法分析,得到对应的抽象语法树;
c.采用字节码生成器遍历抽象语法树,得到字节码。
(4)执行子单元。
执行子单元,用于执行字节码对应的操作,得到调试结果。
(六)发送单元306。
发送单元306,用于通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的调试装置由连接单元与调试主控端建立无线连接;由应用信息单元通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息;由运行单元在渲染引擎信息对应的渲染引擎上运行待调试应用;由调试操作指令单元通过无线连接从调试主控端获取调试操作指令;由调试单元基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;由发送单元通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。在本申请中,调试主控端无需模拟待调试应用的虚拟运行环境,就可以通过无线连接对终端上安装的待调试应用进行远程的真机调试。由此,该方案可以在真实的运行环境下调试待调试应用,从而提高调试的准确度。
本申请实施例还提供一种终端,该终端可以是手机、平板电脑、微型处理盒子、无人机、或者图像采集设备等等。如图4所示,其示出了本申请实施例所涉及的终端的结构示意图,具体来讲:
该终端可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对终端进行整体检测。在一些实施例中,处理器401可包括一个或多个处理核心;在一些实施例中,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
终端还包括给各个部件供电的电源403,在一些实施例中,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该终端还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,终端还可以包括显示单元等,在此不再赘述。具体在本实施例中,终端中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
与调试主控端建立无线连接;
通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息;
在渲染引擎信息对应的渲染引擎上运行待调试应用;
通过无线连接从调试主控端获取调试操作指令;
基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;
通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,在本申请中,调试主控端无需模拟待调试应用的虚拟运行环境,就可以通过无线连接对终端上安装的待调试应用进行远程的真机调试。由此,该方案可以在真实的运行环境下调试待调试应用,从而提高调试的准确度。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种调试方法中的步骤。例如,该指令可以执行如下步骤:
与调试主控端建立无线连接;
通过无线连接从调试主控端获取待调试应用的应用信息,应用信息包括渲染引擎信息;
在渲染引擎信息对应的渲染引擎上运行待调试应用;
通过无线连接从调试主控端获取调试操作指令;
基于渲染引擎对待调试应用执行调试操作指令对应的调试操作,得到调试结果;
通过无线连接将调试结果发送给调试主控端,使得调试主控端显示调试结果。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种调试方法中的步骤,因此,可以实现本申请实施例所提供的任一种调试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种调试方法、装置以及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种调试方法,其特征在于,包括:
与调试主控端建立无线连接;
通过所述无线连接从调试主控端获取待调试应用的应用信息,所述应用信息包括渲染引擎信息;
当确定被调试端安装了所述待调试应用和所述渲染引擎信息对应的渲染引擎时,在所述渲染引擎信息对应的渲染引擎上运行待调试应用,所述渲染引擎包括调试组件和通信组件;
通过所述无线连接从调试主控端获取调试操作指令;
通过所述调试组件开启所述待调试应用的调试开关;
采用所述通信组件将所述调试操作指令拉取到调试组件中;
根据所述调试操作指令在调试组件中将待调试应用翻译为字节码;
执行所述字节码对应的操作,得到调试结果,并通过所述调试组件将所述字节码中被多次翻译和执行的字节码确定为热点代码,且将所述热点代码编译成所述被调试端的本地平台对应的机器码;
通过所述无线连接将调试结果发送给调试主控端,使得调试主控端显示所述调试结果。
2.如权利要求1所述的调试方法,其特征在于,所述调试组件包括词法分析器、语法分析器以及字节码生成器,所述在调试组件中将待调试应用翻译为字节码,包括:
采用词法分析器对所述调试应用的代码字符进行词法分析,得到单词流;
采用语法分析器对所述单词流进行语法分析,得到对应的抽象语法树;
采用字节码生成器遍历所述抽象语法树,得到字节码。
3.如权利要求1所述的调试方法,其特征在于,采用所述通信组件将所述调试操作指令拉取到调试组件中,包括:
建立本地套接字,并通过所述无线连接获取调试主控端套接字;
检测所述调试主控端套接字;
当从所述调试主控端套接字检测到的检测数据为调试操作指令时,采用所述通信组件将调试操作指令通过本地套接字拉取到调试组件中。
4.如权利要求1所述的调试方法,其特征在于,所述与调试主控端建立无线连接,包括:
获取标识码;
对所述标识码进行解码操作,得到中转服务器地址信息和验证信息;
根据所述中转服务器地址信息向中转服务器发送验证信息;
当从中转服务器获得确认验证信息时,根据所述确认验证信息与调试主控端建立无线连接,所述确认验证信息包括调试主控端套接字。
5.如权利要求4所述的调试方法,其特征在于,根据所述确认验证信息与调试主控端建立无线连接,包括:
建立本地套接字,并确认所述确认验证信息中的调试主控端套接字;
通过所述本地套接字向中转服务器发送连接请求,所述连接请求包括调试主控端套接字;
当接收到从中转服务器返回的确认连接信息时,确认经由中转服务器与调试主控端成功建立无线连接。
6.如权利要求5所述的调试方法,其特征在于,确认经由中转服务器与调试主控端成功建立无线连接之后,还包括:
显示连接成功提示并显示调试页面;
当检测到基于针对所述调试页面的退出调试操作时,向调试主控端发送断连请求;
当获得同意断连信息后,关闭所述无线连接;
当检测到基于针对所述调试页面的信息查看操作时,向调试主控端发送查看请求;
当获得同意查看信息时,根据所述同意查看信息显示详细信息页面。
7.如权利要求1所述的调试方法,其特征在于,通过所述无线连接将调试结果发送给调试主控端之后,还包括:
通过所述无线连接向调试主控端发送调试结束报文;
当通过所述无线连接从调试主控端获得结束确认指令时,关闭所述无线连接;
当通过所述无线连接从调试主控端获得继续调试指令时,再次基于所述渲染引擎对待调试应用执行继续调试指令对应的调试操作,得到调试结果,并通过所述无线连接将调试结果发送给调试主控端。
8.一种调试装置,其特征在于,包括:
连接单元,用于与调试主控端建立无线连接;
应用信息单元,用于通过所述无线连接从调试主控端获取待调试应用的应用信息,所述应用信息包括渲染引擎信息;
运行单元,用于当确定被调试端安装了所述待调试应用和所述渲染引擎信息对应的渲染引擎时,在所述渲染引擎信息对应的渲染引擎上运行待调试应用,所述渲染引擎包括调试组件和通信组件;
调试操作指令单元,用于通过所述无线连接从调试主控端获取调试操作指令;
调试单元,用于通过所述调试组件开启所述待调试应用的调试开关;采用所述通信组件将所述调试操作指令拉取到调试组件中;根据所述调试操作指令在调试组件中将待调试应用翻译为字节码;执行所述字节码对应的操作,得到调试结果,并通过所述调试组件将所述字节码中被多次翻译和执行的字节码确定为热点代码,且将所述热点代码编译成所述被调试端的本地平台对应的机器码;
发送单元,用于通过所述无线连接将调试结果发送给调试主控端,使得调试主控端显示所述调试结果。
9.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1~7任一项所述的调试方法中的步骤。
10.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的应用程序,其特征在于,处理器执行应用程序时实现如权利要求1-7任一项所述的调试方法。
CN201910313154.9A 2019-04-18 2019-04-18 调试方法、装置以及存储介质 Active CN111831538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910313154.9A CN111831538B (zh) 2019-04-18 2019-04-18 调试方法、装置以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910313154.9A CN111831538B (zh) 2019-04-18 2019-04-18 调试方法、装置以及存储介质

Publications (2)

Publication Number Publication Date
CN111831538A CN111831538A (zh) 2020-10-27
CN111831538B true CN111831538B (zh) 2024-03-26

Family

ID=72914915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910313154.9A Active CN111831538B (zh) 2019-04-18 2019-04-18 调试方法、装置以及存储介质

Country Status (1)

Country Link
CN (1) CN111831538B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463592A (zh) * 2020-11-12 2021-03-09 许继集团有限公司 一种继电保护装置的分布式自动测试方法及测试系统
CN112486813A (zh) * 2020-11-25 2021-03-12 广州品唯软件有限公司 调试方法、装置以及计算机可读存储介质
CN113032248A (zh) * 2021-03-05 2021-06-25 粒界(上海)信息科技有限公司 安卓系统的应用调试方法、装置、存储介质及电子设备
CN112882950B (zh) * 2021-03-18 2023-07-25 抖音视界有限公司 应用调试方法及装置、电子设备和计算机可读存储介质
CN113505070A (zh) * 2021-07-13 2021-10-15 中原银行股份有限公司 一种代码调试方法、移动终端和计算机设备
CN114625660A (zh) * 2022-03-22 2022-06-14 阿里巴巴(中国)有限公司 调试方法及装置
CN115328817B (zh) * 2022-10-17 2023-02-14 杭州菲助科技有限公司 一种快速同步开发端和移动端的调试方法、装置及应用

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577209A (zh) * 2012-08-06 2014-02-12 浙江大华技术股份有限公司 一种基于嵌入式设备的应用程序远程在线调试方法及装置
CN106383785A (zh) * 2016-09-21 2017-02-08 网易(杭州)网络有限公司 移动应用的调试方法及装置
CN107688529A (zh) * 2017-02-20 2018-02-13 平安科技(深圳)有限公司 组件调试方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577209A (zh) * 2012-08-06 2014-02-12 浙江大华技术股份有限公司 一种基于嵌入式设备的应用程序远程在线调试方法及装置
CN106383785A (zh) * 2016-09-21 2017-02-08 网易(杭州)网络有限公司 移动应用的调试方法及装置
CN107688529A (zh) * 2017-02-20 2018-02-13 平安科技(深圳)有限公司 组件调试方法和装置

Also Published As

Publication number Publication date
CN111831538A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
CN111831538B (zh) 调试方法、装置以及存储介质
US11409949B2 (en) Mobile device resource provisioning system and method
CN108984174B (zh) 跨平台的应用创建方法、装置、服务器和存储介质
US20120284696A1 (en) Method, Apparatuses and a System for Compilation
US11726799B2 (en) Preventing framework conflicts for multi-OS applications
CN102323880A (zh) 基于浏览器解析方式的手机应用界面的开发方法和终端
CN111597114B (zh) 小程序的验证方法、装置、设备及存储介质
CN111309620B (zh) 一种游戏协议测试方法、装置、电子设备和存储介质
WO2014132145A1 (en) Web service black box testing
CN108595331B (zh) 异步接口的测试方法、介质、装置和计算设备
US9756149B2 (en) Machine-specific instruction set translation
US10353700B1 (en) Code base sharing between standalone and web-based versions of an application via an emulated network communication channel
WO2024032209A1 (zh) 区块链交易验证方法、装置、存储介质及电子设备
Pterneas Getting Started with HTML5 WebSocket Programming
US9565201B2 (en) Security threat identification/testing using annotated sequence diagrams
CN117311732A (zh) 一种项目部署方法及相关装置
CN115291867A (zh) 互动剧交互界面的生成系统、方法及装置
CN117640229A (zh) 组件化跨包调用方法、装置、设备和介质
CN117873482A (zh) 智能合约的代码验证方法、装置、设备及存储介质
Kirsimäe F2f mobile computing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40030058

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant