CN107918583B - 一种脚本动态调试方法、装置及终端 - Google Patents
一种脚本动态调试方法、装置及终端 Download PDFInfo
- Publication number
- CN107918583B CN107918583B CN201610883480.XA CN201610883480A CN107918583B CN 107918583 B CN107918583 B CN 107918583B CN 201610883480 A CN201610883480 A CN 201610883480A CN 107918583 B CN107918583 B CN 107918583B
- Authority
- CN
- China
- Prior art keywords
- script
- application program
- debugging
- calling
- directory
- 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/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种脚本动态调试方法、系统及终端,通过进行脚本的同步以及监听应用程序的运行状态,从而实现脚本的动态加载和动态调试,在本发明所实现的动态调试中,在脚本被修改后,不需要重新生成工程就可以观察到脚本的修改效果。此外,本发明节省了生成工程所需的时间,使得对于脚本的调试更为方便省事,能够使得开发者在动态调试脚本的过程中,实时保存调试现场;并且在应用程序运行过程中发现问题时,可以及时修改脚本,并且在不破坏应用程序的实时环境的情况下加载修改后的脚本,从而更为有效地修复脚本存在的漏洞。
Description
技术领域
本发明涉及脚本调试领域,尤其涉及一种脚本动态调试方法、装置及终端。
背景技术
随着脚本语言的快速发展,许多应用程序在运行过程中都涉及到脚本的编译和执行,现有技术中,在对依赖于应用程序的脚本进行调试时需要执行下述步骤:
首先,需要将修改后的脚本所在的文件夹拖入应用程序的资源文件夹中;
然后,在修改脚本之后还需要重新生成应用程序才能使得脚本的修改生效。
可见,现有技术中对于脚本的调试需要重新生成应用程序,因此,难以实现对脚本的动态调试,而重新生成应用程序耗时较长,并且花费的代价较高。
此外,在正式环境中一般都是从后台拉取最新的脚本,而调试环境中并不需要从后台调取脚本,从而导致了脚本的载入方式因运行环境的不同存在差异,造成了应用程序的调试版本与正式版本的切换操作较为繁琐。
发明内容
为了解决上述技术问题,本发明提出了一种脚本动态调试方法、系统及终端,通过进行脚本的同步以及监听应用程序的运行状态,从而实现脚本的动态加载和动态调试,在本发明所实现的动态调试中,在脚本被修改后,不需要重新生成应用程序就可以观察到脚本的修改效果。
本发明具体是以如下技术方案实现的:
一种脚本动态调试方法,所述方法包括:
将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
监听所述应用程序的运行状态;
若所述应用程序进入前台,则在进入前台后,将应用程序原有的由脚本生成的包清空,并根据所述脚本所在目录下的脚本文件重新生成新的包。
进一步地,通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,所述将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包包括:
监听工程文件中所述脚本的代码是否发生变动:
若是,则将变动后的脚本传输至应用程序包。
进一步地,所述将变动后的脚本传输至应用程序包包括使用传输控制协议进行传输。
进一步地,还包括:
判断应用程序是否处于调试模式:若是,则在应用程序编译过程中将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,在调试过程中,若对于工程文件中的脚本进行改动,则:
将调用所述脚本的应用程序调入后台;
将调入后台的所述应用程序再重新调回前台,则所述应用程序即可调用改动后的脚本。
进一步地,所述脚本为lua脚本。
进一步地,所述脚本和所述应用程序均运行于iOS操作系统。
一种脚本动态调试装置,包括:
同步模块,用于将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
监听模块,用于监听所述应用程序的运行状态;
卸载模块,用于将应用程序原有的由脚本生成的包清空;
加载模块,用于根据所述脚本所在目录下的脚本文件重新生成新的包。
进一步地,所述同步模块包括:
监听单元,用于监听工程文件中所述脚本代码是否发生变动;
传输单元,用于将变动后的脚本传输至应用程序包。
进一步地,还包括:
调试模式判断模块,用于判断应用程序是否处于调试模式;
编译模块,用于根据所述调试模式判断模块的判断结果对应用程序进行编译。
进一步地,还包括:
调入后台模块,用于将调用所述脚本的应用程序调入后台;
调回前台模块,用于将调入后台的所述应用程序再重新调回前台。
一种脚本动态调试终端,所述终端包括上述的脚本动态调试系统。
本发明提供了一种脚本动态调试方法、系统及终端,具有如下有益效果:
(1)通过进行脚本的同步以及监听应用程序的运行状态,可以实现对于脚本的动态修改代码以及实时调试,从而节省了生成应用程序所需的时间,使得对于脚本的调试更为方便省事;
(2)能够使得应用程序开发者在动态调试脚本的过程中,能够实时保存调试现场;
(3)在应用程序运行过程中发现问题时,可以及时修改脚本,并且不破坏应用程序的实时环境,从而更为有效地修复脚本存在的漏洞。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例1提供的脚本动态调试方法流程图;
图2是本发明实施例1提供的重载脚本的方法的流程图;
图3是本发明实施例3提供的脚本动态调试装置的总体框图;
图4是本发明实施例3提供的同步模块的框图;
图5是本发明实施例5提供的终端的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本实施例提供一种脚本动态调试方法,具体地,本实施例中所述脚本为lua脚本,所述调试方法具体应用于iOS模拟器。当然,在其他实施方式中,也可以基于iOS操作系统调试其他脚本,或者基于其他操作系统调试其他脚本。
lua作为一门小巧,灵活的脚本语言,很多iOS应用程序都用到了它。iOS的应用程序app(application)通常是由C++语言和object-c语言来编写,需要通过xcode编译器才能生成。现有技术中通过wax框架即可将lua脚本应用于基于iOS的app中。现有技术中,通常需要将lua脚本打包到应用程序中的resouce文件夹中,或者是通过网络下载后台下发的lua脚本,但是这种方案在平时调试程序时会带来很大的成本,难以实现lua脚本的动态调试,而通过本实施例的方法即可降低lua脚本动态调试的成本,实现lua脚本的动态调试。
具体地,本实施例提供的脚本动态调试方法如图1所示,所述方法包括:
S101.将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
具体地,本实施例使用Xcode编译应用程序所在的工程文件。Xcode是运行在操作系统Mac OS X上的集成开发工具(IDE),由苹果公司开发。Xcode是开发OS X和iOS应用程序的最快捷的方式。Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。
在Xcode编译过程中,通过使用链接器(link)的方式将工程文件中的lua脚本所在目录同步至调用所述lua脚本的应用程序对应的app包。使用link后,若lua脚本被修改,则应用程序若重新加载lua脚本生成的lua包则加载的是修改后的的lua脚本生成的lua包。
S102.监听所述应用程序的运行状态。
在应用程序中添加监听代码,使得应用程序能够随时监控自身的运行状态,及时捕捉运行状态变更。在对应用程序的运行状态进行监听后,应用程序被调入后台或被调入前台均会在应用程序内部生成通知,根据通知的具体内容,应用程序可以进行相应的操作。
S103.若所述应用程序进入前台,则在进入前台后,将应用程序原有的由脚本生成的包清空,并根据所述脚本所在目录下的脚本文件重新生成新的包。
本实施例中,应用程序由后台进入前台,则会将进入前台之前,将由lua脚本生成的包清空,并根据当前的lua脚本生成新的lua包。本实施例中以应用程序由后台进入前台为契机,使得应用程序加载最新的lua脚本生成的包。
具体地,在调试过程中,如图2所示,还包括如下步骤:
A.若对于工程文件中的lua脚本进行改动,则:
B.将调用所述lua脚本的应用程序调入后台;
C.将调入后台的所述应用程序再重新调回前台,则所述应用程序即可调用改动后的lua脚本。
以iOS模拟器为例,只需要按一下模拟器中的HOME键即可将应用程序调入后台,点击应用程序的图标即可将应用程序调入前台,可见应用程序在前台与后台间的切换非常容易,基本不需要任何成本,从而本实施例提供的技术方案能够轻松实现lua脚本的动态调试。
进一步地,为解决应用程序在调试版本与正式版本的切换操作较为繁琐的技术问题,本实施例使用模式参数表示应用程序处于调试模式(debug)或正式模式(release)。
在调试模式(debug)中,应用程序通过使用链接器(link)的方式将工程文件中的lua脚本所在目录同步至调用所述lua脚本的应用程序对应的app包。此外,在调试模式中,还可以为根据需要应用程序添加用于调试的代码以输出调试信息。lua脚本的动态调试只有在调试模式(debug)中才能实现。
在正式模式(release)中,应用程序通过网络下载后台下发的lua脚本,不会输出任何用于调试的信息。
可见,根据调试模式的应用程序和正式模式的应用程序运行的代码并不完全一致,在编译过程中,根据所述模式参数的值对应用程序所在的工程文件进行编译。本实施例中所述模式参数为布尔值,如布尔值为假,则为调试模式,编译器编译用于调试模式的代码以生成调试版本的应用程序,若布尔值为真,编译器编译用于正式模式的代码以生成正式版本的应用程序。当然,也可以使用宏定义或其他方式以区分调试模式和正式模式。
具体地,本实施例中通过添加自定义脚本解决应用程序的版本切换繁琐问题以及实现lua脚本的动态调试,在所述自定义脚本中包括用于表征应用程序模式的模式参数,若为调试模式(debug),所述自定义脚本控制在Xcode编译过程中将lua脚本所在目录链接到应用程序的app包。
本实施例提供了一种脚本动态调试方法,能够实现脚本的在调试模式下的动态调试并且能够解决应用程序的版本切换繁琐问题。
实施例2:
本实施例提供一种脚本动态调试方法。具体地,本实施例中所述脚本为lua脚本,所述调试方法应用于运行iOS操作系统的真机。当然,在其他实施方式中,也可以基于iOS操作系统调试其他脚本,或者基于其他操作系统调试其他脚本。
所述方法包括:
S201.将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
本实施例运行iOS操作系统的真机中,工程文件中的lua脚本所在的目录可以不通过链接的方式同步至app包,而使用其他的方式完成同步。
本实施例通过在应用程序中设置监听端口,监听本地的lua脚本是否发生变动,若所述lua脚本发生变动,则将变动后的lua脚本传输至app包,具体地,也可以只传输变动过的lua脚本文件,从而实现将工程文件中的lua脚本所在目录同步至调用所述lua脚本的应用程序对应的app包。具体地,本实施例中使用传输控制协议(TCP)连接传输。当然,也可以使用用户数据报协议(UDP)或其他方式实现lua脚本文件的传输。
S202.监听所述应用程序的运行状态。
在应用程序中添加监听代码,使得应用程序能够随时监控自身的运行状态,及时捕捉运行状态的变更。在对应用程序的运行状态进行监听后,应用程序被调入后台或被调入前台均会在应用程序内部生成通知,根据通知的具体内容,应用程序可以进行相应的操作。
S203.若所述应用程序进入前台,则在进入前台后,将应用程序原有的由脚本生成的包清空,并根据所述脚本所在目录下的脚本文件重新生成新的包。
进一步地,本实施例使用宏定义表示应用程序处于调试模式(debug)或正式模式(release)。具体地,定义宏LUA_DEBUG表示应用程序所处的模式,所述宏的值为1,则为调试模式,否则,为正式模式。在编译过程中,即可根据所述宏的值判断应用程序的模式。
在调试模式(debug)中,应用程序通过实时传输的方式,使得工程文件中的lua脚本所在目录同步至调用所述lua脚本的应用程序对应的app包。此外,在调试模式中,还可以为根据需要应用程序添加用于调试的代码以输出调试信息。lua脚本的动态调试只有在调试模式(debug)中才能实现。
在正式模式(release)中,应用程序通过网络下载后台下发的lua脚本,不会输出任何用于调试的信息。
本实施例提供了另一种脚本动态调试方法,不仅能够实现脚本的在调试模式下的动态调试并且能够解决应用程序的版本切换繁琐问题,而且能够使得开发者在动态调试脚本的过程中,能够实时保存调试现场;在应用程序运行过程中发现问题时,可以及时修改脚本,并且不破坏应用程序的实时环境,从而更为有效地修复脚本存在的漏洞。
实施例3:
本实施例提供了一种脚本动态调试装置,如图3所示,包括:
一种脚本动态调试装置,包括:
同步模块301,用于将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
监听模块302,用于监听所述应用程序的运行状。
其中,同步模块301将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包,从而达到若所述脚本发生变动,则应用程序所引用的脚本也能够同步发生变动的效果。监听模块302用于监听所述应用程序的运行状态,对应用程序的运行状态进行监听后,应用程序被调入后台或被调入前台均会在应用程序内部生成通知,根据通知的具体内容,应用程序可以进行相应的操作。
卸载模块303,用于将应用程序原有的由脚本生成的包清空。
加载模块304,用于根据所述脚本所在目录下的脚本文件重新生成新的包。
调入后台模块305,用于将调用所述脚本的应用程序调入后台;
调回前台模块306,用于将调入后台的所述应用程序再重新调回前台。
程序的运行状态的变动引发对于脚本生成的包的卸载和加载,以应用程序由后台进入前台为契机,使得应用程序加载最新的脚本生成的包,从而实现脚本的动态调试。
进一步地,还包括:
调试模式判断模块307,用于判断应用程序是否处于调试模式;
编译模块308,用于根据所述调试模式判断模块的判断结果对应用程序进行编译。
本实施例根据对于应用程序是否处于调试模式进行判断,并根据判断结果对应用程序进行编译,从而能够解决应用程序在调试版本与正式版本的切换操作较为繁琐的技术问题。
具体地,所述同步模块301如图4所示,包括:
监听单元3011,用于监听工程文件中所述脚本代码是否发生变动;
传输单元3012,用于将变动后的脚本传输至应用程序包。
本实施例基于同样地发明构思,提供了一种脚本动态调试装置,本实施例能够用于实现上述实施例中提供的脚本动态调试方法。
实施例4:
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例用于实现脚本动态调试的方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
第一步,将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
第二步,监听所述应用程序的运行状态;
第三步,若所述应用程序进入前台,则在进入前台后,将应用程序原有的由脚本生成的包清空,并根据所述脚本所在目录下的脚本文件重新生成新的包。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
所述将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包包括:
监听工程文件中所述脚本的代码是否发生变动:
若是,则将变动后的脚本传输至应用程序包。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
所述将变动后的脚本传输至应用程序包包括使用传输控制协议进行传输。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
判断应用程序是否处于调试模式:若是,则在应用程序编译过程中将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
第一步,在调试过程中,若对于工程文件中的脚本进行改动,则:
第二步,将调用所述脚本的应用程序调入后台;
第三步,将调入后台的所述应用程序再重新调回前台,则所述应用程序即可调用改动后的脚本。
可选地,存储介质存储的用于执行的程序代码能够运行于iOS操作系统。
可选地,存储介质存储的用于执行的程序代码能够实现lua脚本的动态调试。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
实施例5:
参见图5,本发明实施例提供了一种终端,该终端可以用于实施上述实施例中提供的用于实现脚本动态调试的方法。具体来讲:
所述终端可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(LowNoiseAmplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System ofMobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述终端的使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及所述终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图5中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
所述终端还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在所述终端移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于所述终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与所述终端之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与所述终端的通信。
WiFi属于短距离无线传输技术,所述终端通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块170,但是可以理解的是,其并不属于所述终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是所述终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行所述终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
所述终端还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,所述终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于进行以下操作的指令:
第一步,将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
第二步,监听所述应用程序的运行状态;
第三步,若所述应用程序进入前台,则在进入前台后,将应用程序原有的由脚本生成的包清空,并根据所述脚本所在目录下的脚本文件重新生成新的包。
进一步地,终端的存储器中,还包含用于执行以下操作的指令:
通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,终端的存储器中,还包含用于执行以下操作的指令:
通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,终端的存储器中,还包含用于执行以下操作的指令:
所述将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包包括:
监听工程文件中所述脚本的代码是否发生变动:
若是,则将变动后的脚本传输至应用程序包。
进一步地,终端的存储器中,还包含用于执行以下操作的指令:
所述将变动后的脚本传输至应用程序包包括使用传输控制协议进行传输。
进一步地,终端的存储器中,还包含用于执行以下操作的指令:
判断应用程序是否处于调试模式:若是,则在应用程序编译过程中将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,终端的存储器中,还包含用于执行以下操作的指令:
第一步,在调试过程中,若对于工程文件中的脚本进行改动,则:
第二步,将调用所述脚本的应用程序调入后台;
第三步,将调入后台的所述应用程序再重新调回前台,则所述应用程序即可调用改动后的脚本。
进一步地,终端的存储器中,存储的用于执行的程序代码能够运行于iOS操作系统。
进一步地,终端的存储器中,存储的用于执行的程序代码能够实现lua脚本的动态调试。
综上,本发明实施例提供的终端,不仅能够实现脚本的在调试模式下的动态调试,而且能够使得开发者在动态调试脚本的过程中,能够实时保存调试现场;在应用程序运行过程中发现问题时,可以及时修改脚本,并且不破坏应用程序的实时环境,从而更为有效地修复脚本存在的漏洞。。
实施例6:
本发明实施例提供了一种图形用户接口,所述图形用户接口用在终端上,所述终端包括触摸屏显示器、存储器和用于执行一个或者一个以上的程序的一个或者一个以上的处理器;所述图形用户接口包括:
第一步,将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
第二步,监听所述应用程序的运行状态;
第三步,若所述应用程序进入前台,则在进入前台后,将应用程序原有的由脚本生成的包清空,并根据所述脚本所在目录下的脚本文件重新生成新的包。
进一步地,所述图形用户接口:
通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,所述图形用户接口:
通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,所述图形用户接口:
所述将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包包括:
监听工程文件中所述脚本的代码是否发生变动:
若是,则将变动后的脚本传输至应用程序包。
进一步地,所述图形用户接口:
所述将变动后的脚本传输至应用程序包包括使用传输控制协议进行传输。
进一步地,所述图形用户接口:
判断应用程序是否处于调试模式:若是,则在应用程序编译过程中将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
进一步地,所述图形用户接口:
第一步,在调试过程中,若对于工程文件中的脚本进行改动,则:
第二步,将调用所述脚本的应用程序调入后台;
第三步,将调入后台的所述应用程序再重新调回前台,则所述应用程序即可调用改动后的脚本。
综上所述,本发明实施例提供的图形用户接口,通过进行脚本的同步以及监听应用程序的运行状态,从而实现脚本的动态加载和动态调试,在本发明所实现的动态调试中,在脚本被修改后,不需要重新生成应用程序就可以观察到脚本的修改效果。
需要说明的是:上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种脚本动态调试方法,其特征在于,所述方法包括:
判断应用程序是否处于调试模式;
若所述应用程序处于调试模式,在应用程序编译过程中将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
监听所述应用程序的运行状态;
若所述应用程序进入前台,则在进入前台后,将应用程序原有的由工程文件中的脚本生成的包清空,并根据所述脚本所在目录下的当前的脚本文件重新生成新的包。
2.根据权利要求1所述的方法,其特征在于,通过使用链接器的方式将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包。
3.根据权利要求1所述的方法,其特征在于,所述将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包包括:
监听工程文件中所述脚本的代码是否发生变动:
若是,则将变动后的脚本传输至应用程序包。
4.根据权利要求3所述的方法,其特征在于,所述将变动后的脚本传输至应用程序包包括使用传输控制协议进行传输。
5.根据权利要求1所述的方法,其特征在于:在调试过程中,若对于工程文件中的脚本进行改动,则:
将调用所述脚本的应用程序调入后台;
将调入后台的所述应用程序再重新调回前台,则所述应用程序即可调用改动后的脚本。
6.根据权利要求1所述的方法,其特征在于,所述脚本为lua脚本。
7.根据权利要求1所述的方法,其特征在于,所述脚本和所述应用程序均运行于iOS操作系统。
8.一种脚本动态调试装置,其特征在于,包括:
调试模式判断模块,用于判断应用程序是否处于调试模式;
同步模块,用于若所述应用程序处于调试模式,在应用程序编译过程中将工程文件中的脚本所在目录同步至调用所述脚本的应用程序对应的应用程序包;
监听模块,用于监听所述应用程序的运行状态;
卸载模块,用于将应用程序原有的由工程文件中的脚本生成的包清空;
加载模块,用于根据所述脚本所在目录下的当前的脚本文件重新生成新的包。
9.根据权利要求8所述的装置,其特征在于,所述同步模块包括:
监听单元,用于监听工程文件中所述脚本代码是否发生变动;
传输单元,用于将变动后的脚本传输至应用程序包。
10.根据权利要求8所述的装置,其特征在于,还包括:
调入后台模块,用于将调用所述脚本的应用程序调入后台;
调回前台模块,用于将调入后台的所述应用程序再重新调回前台。
11.一种脚本动态调试终端,其特征在于,所述终端包括权利要求8-10中任意一项所述的脚本动态调试系统。
12.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如权利要求1-7任意一项所述的脚本动态调试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610883480.XA CN107918583B (zh) | 2016-10-09 | 2016-10-09 | 一种脚本动态调试方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610883480.XA CN107918583B (zh) | 2016-10-09 | 2016-10-09 | 一种脚本动态调试方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107918583A CN107918583A (zh) | 2018-04-17 |
CN107918583B true CN107918583B (zh) | 2021-01-19 |
Family
ID=61892549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610883480.XA Active CN107918583B (zh) | 2016-10-09 | 2016-10-09 | 一种脚本动态调试方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107918583B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111162960B (zh) * | 2019-12-03 | 2022-12-02 | 支付宝实验室(新加坡)有限公司 | 启动调试面板的方法和服务器 |
CN111815767A (zh) * | 2020-09-02 | 2020-10-23 | 江西科骏实业有限公司 | web端可交互模型制作方法、装置、设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855179A (zh) * | 2011-06-30 | 2013-01-02 | 国际商业机器公司 | 虚拟机环境下的程序调试方法和系统 |
CN104991866A (zh) * | 2015-07-30 | 2015-10-21 | 新华瑞德(北京)网络科技有限公司 | Js程序的调试方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981957B (zh) * | 2012-11-30 | 2015-03-18 | 福建天晴数码有限公司 | 虚断点脚本调试方法 |
CN104102574B (zh) * | 2013-04-07 | 2017-12-26 | 腾讯科技(深圳)有限公司 | 应用程序测试方法及装置 |
CN104714788B (zh) * | 2013-12-12 | 2018-12-11 | 腾讯科技(深圳)有限公司 | 一种软件安装包自动生成的方法及装置 |
US20160246698A1 (en) * | 2015-02-21 | 2016-08-25 | Hcl Technologies Limited | Change based testing of a javascript software application |
-
2016
- 2016-10-09 CN CN201610883480.XA patent/CN107918583B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855179A (zh) * | 2011-06-30 | 2013-01-02 | 国际商业机器公司 | 虚拟机环境下的程序调试方法和系统 |
CN104991866A (zh) * | 2015-07-30 | 2015-10-21 | 新华瑞德(北京)网络科技有限公司 | Js程序的调试方法及装置 |
Non-Patent Citations (1)
Title |
---|
c++调用lua;honey199396;《CSDN,https://blog.csdn.net/honey199396/article/details/50900277》;20160315;第1页-第4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107918583A (zh) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857403B (zh) | 一种页面更新、页面处理方法及装置 | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
CN108241500B (zh) | 一种硬件组件的修复方法、装置、系统和存储介质 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
WO2015078293A1 (zh) | 音效处理方法、装置、插件管理器及音效插件 | |
CN106775827B (zh) | 一种应用程序更新方法及装置、计算机设备 | |
CN111176961B (zh) | 一种应用程序测试方法、装置及存储介质 | |
CN107329901B (zh) | 数据包抓取方法、终端、服务器和存储介质 | |
CN109240902B (zh) | 一种获取电子设备的固件代码的方法和装置 | |
CN106713608B (zh) | 应用的功能状态修改方法、装置及终端 | |
CN104965722B (zh) | 一种显示信息的方法及装置 | |
CN103473163A (zh) | 应用程序检测方法及装置 | |
CN110968508B (zh) | 一种小程序的加载时间确定方法、装置、终端及存储介质 | |
CN111723002A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN105610878B (zh) | 目录上传方法、数据发布方法、终端及服务器 | |
CN108090345B (zh) | linux系统外部命令执行方法及装置 | |
CN107015866B (zh) | 一种数据处理方法及装置 | |
CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
CN108431767A (zh) | 一种加载软件程序的方法、用户终端及存储介质 | |
CN107918583B (zh) | 一种脚本动态调试方法、装置及终端 | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
EP3129883B1 (en) | Method and apparatus for repairing dynamic link library file | |
CN105278942B (zh) | 组件管理方法及装置 | |
CN108664389B (zh) | 一种测试方法、装置及终端 | |
CN107967203B (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 |