CN108280027B - 一种脚本的并发调试渲染方法及装置 - Google Patents
一种脚本的并发调试渲染方法及装置 Download PDFInfo
- Publication number
- CN108280027B CN108280027B CN201810129736.7A CN201810129736A CN108280027B CN 108280027 B CN108280027 B CN 108280027B CN 201810129736 A CN201810129736 A CN 201810129736A CN 108280027 B CN108280027 B CN 108280027B
- Authority
- CN
- China
- Prior art keywords
- thread
- rendering
- webworker
- sub
- displaying
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种脚本的并发调试渲染方法及装置,用于实现在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。本发明实施例方法包括:接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,该Webworker子线程用于执行对应的线程代码;接收由每个Webworker子线程发送的对于对应线程的执行结果;对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种脚本的并发调试渲染方法及装置。
背景技术
WEB IDE(WEB Integrated Development Environment)是基于浏览器的集成开发环境,可进行代码开发、检查及并发调试,所谓并发调试即在进程的调试过程中寻找断点位置,且只暂停最先遇到该断点位置的线程,而其他线程继续运行。
Rhino作为一个开源的脚本引擎框架,可以运行类似javascript语法的脚本,可以调用java的方法,也可以嵌入Java执行,由于Rhino脚本作为后端java代码的扩展实现时,它的执行是在后端执行,并且是被后端java调用执行。在调试过程中,代码的执行以及过程变量值是需要在后端完成后返回给浏览器的,浏览器等待收到返回信息后渲染到WEB IDE中的相应断点的调试状态。由于java属于并发调试,所以对应的WEB IDE中的渲染调试状态也需要达到并发调试的效果。
而现有web端脚本调试的方式都是单页面调试方式,不能满足Web IDE中调试的需求。WEB IDE是需要胜任在同一个集成环境页签中完成对多个页面的同时调试。因此需要处于调试状态的WEB IDE页签不能阻塞对该页签中元素的操作。
发明内容
本发明实施例提供了一种脚本的并发调试渲染方法及装置,用于实现在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
本发明实施例第一方面提供了一种脚本的并发调试渲染方法,包括:
接收Rhino脚本在服务器端的调试运行信息,调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,Webworker子线程用于执行对应的线程代码;
接收由每个Webworker子线程发送的对于对应线程的执行结果;
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
优选的,多个线程信息中至少有一个线程信息还包括:断点位置信息;
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值,包括:
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值和断点位置信息。
优选的,在接收由每个Webworker子线程发送的对于对应线程的执行结果之后,该方法还包括:
将包括断点位置信息的第一线程排列在主线程队列中,直至第一线程对应的中断指令结束,对第一线程进行完全渲染展示。
优选的,该方法还包括:
实时监听每个Webworker子线程对于对应的线程的执行结果,直至每个Webworker子线程对应的线程执行结束。
优选的,该方法还包括:
对每个Webworker子线程执行关闭操作。
本发明实施例第二方面提供了一种客户端,包括:
第一接收单元,用于接收Rhino脚本在服务器端的调试运行信息,调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
创建单元,用于对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,Webworker子线程用于执行对应的线程代码;
第二接收单元,用于接收由每个Webworker子线程发送的对于对应线程的执行结果;
渲染展示单元,用于对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
优选的,多个线程信息中至少有一个线程信息还包括:断点位置信息;
渲染展示单元,包括:
渲染展示模块,用于对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值和断点位置信息。
优选的,该客户端还包括:
排列单元,用于将包括断点位置信息的第一线程排列在主线程队列中,直至第一线程对应的中断指令结束,对第一线程进行完全渲染展示。
优选的,该客户端还包括:
监听单元,用于实时监听每个Webworker子线程对于对应的线程的执行结果,直至每个Webworker子线程对应的线程执行结束。
优选的,该客户端还包括:
关闭单元,用于对每个Webworker子线程执行关闭操作。
本发明实施例还提供了一种计算机装置,包括处理器,该处理器用于执行存储于存储器上的计算机程序时,用于实现本发明实施例第一方面所述的一种脚本的并发调试渲染方法。
本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本发明实施例第一方面所述的一种脚本的并发调试渲染方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,通过客户端接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程,每个线程信息包括:debugID和变量状态值,客户端分别对每个debugID对应的线程创建一个Webworker子线程,并在该Webworker子线程中执行对应的线程,然后接收由该Webworker子线程发送的对于对应线程的执行结果,分别将每个执行结果进行渲染展示,并在渲染展示中显示变量状态值,因为本发明中的客户端可以通过在前端创建多个Webworker子线程,并将每个Webworker子线程用于执行从服务器端接收的对应线程,从而避免了客户端的主线程阻塞问题,并分别将Webworker子线程对应的线程的执行结果在客户端进行渲染展示,进一步实现了在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
附图说明
图1为本发明实施例中一种脚本的并发调试渲染方法的一个实施例示意图;
图2为本发明实施例中一种脚本的并发调试渲染方法的另一个实施例示意图;
图3为本发明实施例中一种客户端的一个实施例示意图;
图4为本发明实施例中一种客户端的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种脚本的并发调试渲染方法及装置,用于实现在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
现有的WEB浏览器的内核是多线程的,其中,一个浏览器的内核至少需要三个常驻线程:javascript引擎线程、GUI渲染线程及浏览器事件触发线程,但javascript引擎线程是基于事件驱动单线程执行的,一般来说javascript引擎和页面UI会共用一个线程,所以当点击一个按钮开始运行javascript后,在这段代码运行完毕之前,页面是无法响应用户操作的,换句话说就是被“冻结”了。
一般,Rhino脚本是作为后端(服务器端)java代码的扩展实现,它的执行是在后端执行,并且是被后端java调用执行。在调试过程中,代码的执行以及过程变量值是需要在后端完成后返回给前端(浏览器)的,浏览器等待收到返回信息后渲染到WEB IDE中的相应断点的调试状态,由于java属于并发调试,所以对应的WEB IDE中的渲染调试状态也需要达到并发调试的效果。
基于现有的JS引擎线程和GUI渲染线程互斥而无法实现后端(服务器端)Java代码在前端(浏览器)的并发调试及并发渲染的问题,本发明实施例提出了一种脚本的并发调试渲染方法,用于实现在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染
为方便理解,下面来描述本发明实施例中的脚本并发调试渲染方法,请参阅图1,本发明实施例中一种脚本的并发调试渲染方法的一个实施例,包括:
101、接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
为了解决Java代码在后端(服务器端)的并发调试及并发渲染问题,本实施例将Rhino脚本在服务器端的调试运行信息迁移至前端(客户端)进行运算执行,其中服务器端的调试运行信息包括多个线程信息,每个线程信息包括标记该线程的ID,即debugID,及线程调试过程中的变量状态值。
具体的,debug是一种用于排除程序故障的计算机调试程序,对应本实施例中的调试运行信息,其中调试运行信息中的多个线程即为多个debug,而用于标记每个线程的ID,称为debugID。
需要说明的是,本实施例中的客户端可以为WEB浏览器,或用于实现WEB浏览器功能的APP,或包括WEB浏览器功能的手机、PAD、或计算机装置,但这些客户端都至少需要实现WEB浏览器的功能。
102、对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,该Webworker子线程用于执行对应的线程代码;
Webworker是HTML5提供的一个javascript多线程解决方案,它可以将一些大计算量的代码交给Webworker运行而不阻塞用户主线程,Webworker在当前javascript的主线程中,使用worker类加载一个javascript文件来创建一个子线程,起到互相不阻塞运行的效果,并且提供主线程和子线程之间数据交换的接口:postMessage和onmessage,以完成主线程和Webworker子线程之间的数据通信。
故为了实现服务器端Java代码在客户端的并发调试,客户端在接收到服务器端发送的调试运行信息,即多个线程信息后,客户端在当前的javascript的主线程中对每个debugID对应的线程创建一个Webworker子线程,并将每个线程发送至对应的Webworker子线程中,其中,该Webworker子线程用于执行对应的线程代码。
容易理解的是,因为Webworker是HTML5提供的一个javascript多线程解决方案,故服务器端的调试运行信息发送至客户端后,即服务器端的多个并发调试线程发送至客户端后,为了保证多个并发调试线程能够在客户端依旧保持并发调试,客户端为每个正在进行的调试线程创建一个对应的Webworker子线程,并将每个线程迁移至对应的Webworker子线程中运算执行,以实现服务器端Java多线程在客户端的并发调试。
具体的,客户端通过postMessage接口将每个debugID对应的线程发送至对应的Webworker子线程中运算执行,以避免了javascript主线程的阻塞问题。
103、接收由每个Webworker子线程发送的对于对应线程的执行结果;
每个Webworker子线程将对应的线程代码执行结束后,将该线程代码的执行结果通过postMessage接口发送至客户端,则该客户端通过onmessage接口就可以接收到每个线程的执行结果。
104、对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
客户端接收到每个Webworker子线程对于对应的线程的执行结果后,对每个执行结果通过GUI渲染线程分别进行渲染展示,并在渲染展示中显示变量的状态值。
容易理解的是,若代码是迭代运算的话,则在调试过程中会显示出每一步的变量运算值,故该变量状态值不限于是一个或多个。
本发明实施例中,通过客户端接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程,每个线程信息包括:debugID和变量状态值,客户端分别对每个debugID对应的线程创建一个Webworker子线程,并在该Webworker子线程中执行对应的线程,然后接收由该Webworker子线程发送的对于对应线程的执行结果,分别将每个执行结果进行渲染展示,并在渲染展示中显示变量状态值,因为本发明中的客户端可以通过在前端创建多个Webworker子线程,并将每个Webworker子线程用于执行从服务器端接收的对应线程,从而避免了客户端的主线程阻塞问题,并分别将Webworker子线程对应的线程的执行结果在客户端进行渲染展示,进一步实现了在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
然而在服务器端的调试信息运行中,经常会存在为了解决代码中遇到的bug,而需要在某个位置标记断点信息,以解决调试代码中遇到bug的问题,基于该问题,下面来描述本发明实施例中一种脚本的并发调试渲染方法的另一个实施例,请参阅图2,本发明实施例中一种脚本的并发调试渲染方法的另一个实施例,包括:
201、接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值,所述多个线程信息中至少有一个线程信息还包括:断点位置信息;
为了解决Java代码在后端(服务器端)的并发调试及并发渲染问题,本实施例将Rhino脚本在服务器端的调试运行信息迁移至前端(客户端)进行运算执行,其中服务器端的调试运行信息包括多个线程信息,每个线程信息包括标记该线程的ID,即debugID,及该线程调试过程中的变量状态值。
而区别于实施例1中的步骤101,因为服务器端的并发调试运行信息中包括断点信息,故本实施例中的多个线程信息中至少有一个线程还包括断点位置信息,而该线程即是在服务器端并行调试的多线程中首先遇到断点的线程。
需要说明的是,本实施例中的客户端可以为WEB浏览器,或用于实现WEB浏览器功能的APP,或包括WEB浏览器功能的手机、PAD、或计算机装置,但这些客户端都至少需要实现WEB浏览器的功能。
202、对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,该Webworker子线程用于执行对应的线程代码;
需要说明的是,本实施例中的步骤202与图1所述的实施例的步骤102类似,此处不再赘述。
203、接收由每个Webworker子线程发送的对于对应线程的执行结果;
对应步骤201,因为多个线程中至少有一个线程除了包括变量状态值外,还包括断点位置信息,所以客户端接收的每个Webworker子线程的执行结果中,至少有一个线程的执行结果中除了包括变量状态值外,还包括断点位置信息。
204、对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值及断点位置信息;
客户端接收到每个Webworker子线程发送的对于对应线程的执行结果后,若执行结果中不包含断点位置信息,则客户端通过GUI渲染线程分别对各个Webworker子线程的执行结果进行渲染展示,并在渲染展示中显示变量的状态值;若Webworker子线程的执行结果中包含断点位置信息,则客户端通过GUI渲染线程将位于断点位置信息之前的执行结果进行渲染展示,并在渲染展示中显示变量状态值及断点位置信息,具体的,对于断点位置信息的显示方式可以是在客户端中显示加载的标识符,或弹出正在加载的对话框,此处对于在渲染展示中显示断点位置的方式不做具体限制。
205、将包括断点位置信息的第一线程排列在主线程队列中,直至该第一线程对应的中断指令结束,对该第一线程进行完全渲染展示;
若客户端接收到Webworker子线程的执行结果中包含断点位置信息,为了不影响其他Webworker子线程的执行结果的正常渲染展示,则客户端将该Webworker子线程对应的第一线程排列在主线程队列中,直至该第一线程中对应的中断指令结束,通过GUI渲染线程对该第一线程进行完全渲染展示。
206、实时监听每个Webworker子线程对应的线程的执行结果,直至每个Webworker子线程对应的线程执行结束;
对应于步骤202中所述,Webworker是在当前javascript的主线程中,使用worker类加载一个javascript文件来创建一个子线程,起到互相不阻塞运行的效果,并且提供主线程和子线程之间数据交换的接口:postMessage和onmessage,以完成主线程和Webworker子线程之间的数据通信。
所以每个Webworker子线程对于对应的线程执行结束后,会通过postMessage接口向客户端发送指示信息,以用于指示Webworker子线程处理结束,而客户端则是通过onmessage接口实时监听(接收)该指示信息,直至每个Webworker子线程对应的线程执行结束,不再阻塞客户端对服务器端的调试运行信息的接收。
207、对每个Webworker子线程执行关闭操作。
当客户端通过GUI渲染线程对每个Webworker子线程对应的线程完全渲染后,则通过调用每个Webworker子线程的onmessage接口对每个Webworker子线程执行关闭操作。
本发明实施例中,通过客户端接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程,每个线程信息包括:debugID和变量状态值,客户端分别对每个debugID对应的线程创建一个Webworker子线程,并在该Webworker子线程中执行对应的线程,然后接收由该Webworker子线程发送的对于对应线程的执行结果,分别将每个执行结果进行渲染展示,并在渲染展示中显示变量状态值,因为本发明中的客户端可以通过在前端创建多个Webworker子线程,并将每个Webworker子线程用于执行从服务器端接收的对应线程,从而避免了客户端的主线程阻塞问题,并分别将Webworker子线程对应的线程的执行结果在客户端进行渲染展示,进一步实现了在WEB IDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
其次,在服务端的调试运行信息中包含断点位置信息时,客户端将包含断点位置信息的第一线程进行部分渲染展示,并将该第一线程排列在主线程队列中,直至该第一线程对应的中断指令结束,对该第一线程进行完全渲染展示,增加了本实施例的可操作性。
上面描述了本发明实施例中的一种脚本的并发调试渲染方法,下面来描述本发明实施例中的客户端,请参阅图3,本发明实施例中客户端的一个实施例,包括:
第一接收单元301,用于接收Rhino脚本在服务器端的调试运行信息,调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
创建单元302,用于对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,Webworker子线程用于执行对应的线程代码;
第二接收单元303,用于接收由每个Webworker子线程发送的对于对应线程的执行结果;
渲染展示单元304,用于对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
需要说明的是,本实施例中各单元的作用与图1所述实施例中客户端的作用类似,此处不再赘述。
本发明实施例中,通过第一接收单元301接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程,每个线程信息包括:debugID和变量状态值,通过创建单元302分别对每个debugID对应的线程创建一个Webworker子线程,并在该Webworker子线程中执行对应的线程,然后通过第二接收单元303,接收由该Webworker子线程发送的对于对应线程的执行结果,分别将每个执行结果进行渲染展示,并在渲染展示中显示变量状态值,因为本发明中的客户端可以通过在前端创建多个Webworker子线程,并将每个Webworker子线程用于执行从服务器端接收的对应线程,从而避免了客户端的主线程阻塞问题,并分别将Webworker子线程对应的线程的执行结果在客户端进行渲染展示,进一步实现了在WEBIDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
基于图3所述的实施例,下面来详细描述本发明实施例这个的客户端,请参阅图4,本发明实施例中的客户端的另一个实施例,包括:
第一接收单元401,用于接收Rhino脚本在服务器端的调试运行信息,调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
创建单元402,用于对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,Webworker子线程用于执行对应的线程代码;
第二接收单元403,用于接收由每个Webworker子线程发送的对于对应线程的执行结果;
渲染展示单元404,用于对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
优选的,所述多个线程信息中至少有一个线程信息还包括:断点位置信息;
渲染展示单元404,包括:
渲染展示模块4041,用于对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值和断点位置信息。
优选的,该客户端还包括:
排列单元405,用于将包括断点位置信息的第一线程排列在主线程队列中,直至第一线程对应的中断指令结束,对第一线程进行完全渲染展示。
优选的,该客户端还包括:
监听单元406,用于实时监听每个Webworker子线程对于对应的线程的执行结果,直至每个Webworker子线程对应的线程执行结束。
优选的,该客户端还包括:
关闭单元407,用于对每个Webworker子线程执行关闭操作。
需要说明的是,本实施例中各单元及各模块的作用与图2所述实施例中的客户端的作用类似,此处不再赘述。
本发明实施例中,通过第一接收单元401接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程,每个线程信息包括:debugID和变量状态值,通过创建单元402分别对每个debugID对应的线程创建一个Webworker子线程,并在该Webworker子线程中执行对应的线程,然后通过第二接收单元403,接收由该Webworker子线程发送的对于对应线程的执行结果,分别将每个执行结果进行渲染展示,并在渲染展示中显示变量状态值,因为本发明中的客户端可以通过在前端创建多个Webworker子线程,并将每个Webworker子线程用于执行从服务器端接收的对应线程,从而避免了客户端的主线程阻塞问题,并分别将Webworker子线程对应的线程的执行结果在客户端进行渲染展示,进一步实现了在WEBIDE的同一个集成环境页签中对多个页面的并发调试及并发渲染。
其次,在服务端的调试运行信息中包含断点位置信息时,客户端将包含断点位置信息的第一线程进行部分渲染展示,并通过排列单元405将该第一线程排列在主线程队列中,直至该第一线程对应的中断指令结束,对该第一线程进行完全渲染展示,增加了本实施例的可操作性。
上面从模块化功能实体的角度对本发明实施例中的客户端进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:
该计算机装置用于实现客户端的功能,本发明实施例中计算机装置一个实施例包括:
处理器以及存储器;
存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:
接收Rhino脚本在服务器端的调试运行信息,该调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,Webworker子线程用于执行对应的线程代码;
接收由每个Webworker子线程发送的对于对应线程的执行结果;
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值和断点位置信息。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
将包括断点位置信息的第一线程排列在主线程队列中,直至第一线程对应的中断指令结束,对第一线程进行完全渲染展示。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
实时监听每个Webworker子线程对于对应的线程的执行结果,直至每个Webworker子线程对应的线程执行结束。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
对每个Webworker子线程执行关闭操作。
可以理解的是,上述说明的计算机装置中的处理器执行所述计算机程序时,也可以实现上述对应的客户端实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述客户端的执行过程。例如,所述计算机程序可以被分割成上述客户端中的各单元,各单元可以实现如上述相应客户端说明的具体功能。
所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现客户端的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,可以用于执行如下步骤:
接收Rhino脚本在服务器端的调试运行信息,调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
对每个debugID对应的线程创建一个对应的Webworker子线程,并将每个线程发送至对应的Webworker子线程中,Webworker子线程用于执行对应的线程代码;
接收由每个Webworker子线程发送的对于对应线程的执行结果;
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
对执行结果分别进行渲染展示,并在渲染展示中显示变量状态值和断点位置信息。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
将包括断点位置信息的第一线程排列在主线程队列中,直至第一线程对应的中断指令结束,对第一线程进行完全渲染展示。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
实时监听每个Webworker子线程对于对应的线程的执行结果,直至每个Webworker子线程对应的线程执行结束。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
对每个Webworker子线程执行关闭操作。
可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本发明实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种脚本的并发调试渲染方法,其特征在于,包括:
接收Rhino脚本在服务器端的调试运行信息,所述调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
对每个所述debugID对应的线程创建一个对应的Webworker子线程,并将每个线程代码发送至对应的Webworker子线程中,所述Webworker子线程用于执行对应的线程代码;
接收由每个所述Webworker子线程发送的对于对应线程代码的执行结果;
对所述执行结果分别进行渲染展示,并在渲染展示中显示所述变量状态值。
2.根据权利要求1所述的方法,其特征在于,所述多个线程信息中至少有一个线程信息还包括:断点位置信息;
对所述执行结果分别进行渲染展示,并在渲染展示中显示所述变量状态值,包括:
对所述执行结果分别进行渲染展示,并在渲染展示中显示所述变量状态值和所述断点位置信息。
3.根据权利要求2所述的方法,其特征在于,在所述接收由每个所述Webworker子线程发送的对于对应线程代码的执行结果之后,所述方法还包括:
将包括断点位置信息的第一线程排列在主线程队列中,直至所述第一线程对应的中断指令结束,对所述第一线程进行完全渲染展示。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
实时监听每个所述Webworker子线程对于对应线程代码的执行结果,直至每个所述Webworker子线程对应的线程代码执行结束。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
对每个所述Webworker子线程执行关闭操作。
6.一种客户端,其特征在于,包括:
第一接收单元,用于接收Rhino脚本在服务器端的调试运行信息,所述调试运行信息包括多个线程信息,每个线程信息包括debugID和变量状态值;
创建单元,用于对每个所述debugID对应的线程创建一个对应的Webworker子线程,并将每个线程代码发送至对应的Webworker子线程中,所述Webworker子线程用于执行对应的线程代码;
第二接收单元,用于接收由每个所述Webworker子线程发送的对于对应线程代码的执行结果;
渲染展示单元,用于对所述执行结果分别进行渲染展示,并在渲染展示中显示所述变量状态值。
7.根据权利要求6所述的客户端,其特征在于,所述多个线程信息中至少有一个线程信息还包括:断点位置信息;
所述渲染展示单元,包括:
渲染展示模块,用于对所述执行结果分别进行渲染展示,并在渲染展示中显示所述变量状态值和所述断点位置信息。
8.根据权利要求7所述的客户端,其特征在于,所述客户端还包括:
排列单元,用于将包括断点位置信息的第一线程排列在主线程队列中,直至所述第一线程对应的中断指令结束,对所述第一线程进行完全渲染展示。
9.一种计算机装置,其特征在于,包括处理器,所述处理器在执行存储于存储器上的计算机程序时,用于实现如权利要求1至5中任一项所述的脚本的并发调试渲染方法。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,用于实现如权利要求1至5中任一项所述的脚本的并发调试渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810129736.7A CN108280027B (zh) | 2018-02-08 | 2018-02-08 | 一种脚本的并发调试渲染方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810129736.7A CN108280027B (zh) | 2018-02-08 | 2018-02-08 | 一种脚本的并发调试渲染方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108280027A CN108280027A (zh) | 2018-07-13 |
CN108280027B true CN108280027B (zh) | 2021-06-01 |
Family
ID=62808092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810129736.7A Active CN108280027B (zh) | 2018-02-08 | 2018-02-08 | 一种脚本的并发调试渲染方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108280027B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271156B (zh) * | 2018-09-25 | 2022-02-18 | Oppo广东移动通信有限公司 | 游戏平台的底层调用方法及相关产品 |
CN110968499A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 机器学习中并行测试的优化方法及装置 |
CN109558323B (zh) * | 2018-11-30 | 2022-04-12 | 百度在线网络技术(北京)有限公司 | 用于调试页面的系统、方法和装置 |
CN109582580B (zh) * | 2018-11-30 | 2022-04-12 | 百度在线网络技术(北京)有限公司 | 用于调试页面的系统、方法和装置 |
CN110347947B (zh) * | 2019-06-17 | 2023-06-06 | 创新先进技术有限公司 | 一种页面渲染方法及装置 |
CN110471719A (zh) * | 2019-08-16 | 2019-11-19 | 北京明略软件系统有限公司 | 脚本文件的运行方法及装置、存储介质、电子装置 |
CN110781080B (zh) * | 2019-10-11 | 2023-06-30 | 北京小米移动软件有限公司 | 程序调试方法及装置、存储介质 |
CN111080766B (zh) * | 2019-12-30 | 2023-09-01 | 中科星图股份有限公司 | 一种基于WebGL的GPU加速海量目标高效渲染方法 |
CN111708630A (zh) * | 2020-05-06 | 2020-09-25 | 深圳震有科技股份有限公司 | 基于web前端技术的多线程处理方法、设备及存储介质 |
CN114064264A (zh) * | 2021-09-16 | 2022-02-18 | 浪潮卓数大数据产业发展有限公司 | 基于实时通信的前端多线程渲染方法、装置及计算机介质 |
CN118193142A (zh) * | 2022-12-13 | 2024-06-14 | 华为技术有限公司 | 脚本解释型语言的任务并发方法及相关产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719093A (zh) * | 2009-12-09 | 2010-06-02 | 上海普元信息技术有限责任公司 | 企业Web应用系统中实现跨浏览器Javascript调试的系统及其方法 |
CN102789413A (zh) * | 2011-05-23 | 2012-11-21 | 同济大学 | 一种并行程序的调试系统及方法 |
CN105915367A (zh) * | 2016-03-30 | 2016-08-31 | 青岛海信移动通信技术股份有限公司 | 一种在线调试方法、终端及服务器 |
US9723007B2 (en) * | 2012-12-27 | 2017-08-01 | Netiq Corporation | Techniques for secure debugging and monitoring |
-
2018
- 2018-02-08 CN CN201810129736.7A patent/CN108280027B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719093A (zh) * | 2009-12-09 | 2010-06-02 | 上海普元信息技术有限责任公司 | 企业Web应用系统中实现跨浏览器Javascript调试的系统及其方法 |
CN102789413A (zh) * | 2011-05-23 | 2012-11-21 | 同济大学 | 一种并行程序的调试系统及方法 |
US9723007B2 (en) * | 2012-12-27 | 2017-08-01 | Netiq Corporation | Techniques for secure debugging and monitoring |
CN105915367A (zh) * | 2016-03-30 | 2016-08-31 | 青岛海信移动通信技术股份有限公司 | 一种在线调试方法、终端及服务器 |
Non-Patent Citations (1)
Title |
---|
使用HTML5Web Worker提高Web的应用性能研究;邱珊;《软件导刊》;20131224;第12卷(第12期);第47-51页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108280027A (zh) | 2018-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280027B (zh) | 一种脚本的并发调试渲染方法及装置 | |
CN105843741B (zh) | 应用程序的信息处理方法和装置 | |
CN109144615B (zh) | 一种信息发布方法、装置、设备及存储介质 | |
US10409709B2 (en) | Debugging method, multi-core processor and debugging device | |
US9075915B2 (en) | Managing window focus while debugging a graphical user interface program | |
US8566799B2 (en) | Resuming a prior debug session | |
US10229032B2 (en) | Break on next called function or method in java debugger agent | |
CN107590070B (zh) | 一种业务流程调试方法及装置 | |
US20120079459A1 (en) | Tracing multiple threads via breakpoints | |
US9626281B2 (en) | Call stack display with program flow indication | |
US8752025B2 (en) | Protecting breakpoints in a software debugger | |
US8752022B2 (en) | Thread-specific event management in a non-stop debugging environment | |
US10540150B2 (en) | Composable context menus | |
US20160188243A1 (en) | Memory access protection using processor transactional memory support | |
CN113420268B (zh) | 水印添加方法、装置、设备及存储介质 | |
US20120151267A1 (en) | System for extending use of a data address break point register to implement multiple watch points | |
US11687326B2 (en) | Method and apparatus for data interaction | |
US10229033B2 (en) | System, method and apparatus for debugging of reactive applications | |
CN110347601B (zh) | 脚本进程的中断处理方法和装置 | |
US9471456B2 (en) | Interleaved instruction debugger | |
US20240176456A1 (en) | Interaction method and apparatus, and storage medium | |
WO2020073200A1 (zh) | 调试程序的方法和系统 | |
US10095605B2 (en) | Debugger write interceptor | |
CN111240756B (zh) | 一种图形功能的处理模式可配置的应用程序的执行方法 | |
CN110647405A (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 |