CN111723002A - 一种代码调试方法、装置、电子设备及存储介质 - Google Patents
一种代码调试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111723002A CN111723002A CN202010421044.7A CN202010421044A CN111723002A CN 111723002 A CN111723002 A CN 111723002A CN 202010421044 A CN202010421044 A CN 202010421044A CN 111723002 A CN111723002 A CN 111723002A
- Authority
- CN
- China
- Prior art keywords
- dynamic library
- class
- code
- debugging
- terminal
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 156
- 230000008859 change Effects 0.000 claims abstract description 32
- 230000000694 effects Effects 0.000 claims abstract description 29
- 238000004806 packaging method and process Methods 0.000 claims abstract description 13
- 230000004044 response Effects 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 33
- 230000006854 communication Effects 0.000 claims description 33
- 230000007246 mechanism Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007175 bidirectional communication Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
-
- 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/3628—Software debugging of optimised code
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
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码调试方法、装置、电子设备及存储介质。
背景技术
随着智能手机等电子设备的普及,基于电子设备的App(Application,应用程序)涉及到各行各业,而且随着App功能的增加,开发时的工程项目也越来越大,尤其在项目调试过程中,每次修改完一个功能代码后需要对整个项目重新编译打包,运行调试会花费大量的时间。这样不仅会浪费开发人员的时间和精力,也会导致App功能的优化速度减慢。为此可以把代码按功能进行分离使用CocoaPods等工具进行管理,并对每个Pod进行单独编译形成对应的静态库,在开发时仅对需要修改的Pod使用源码,其他一律使用静态库,这样就大幅度提高了编译运行的速度。
但是,上述方案虽然也可以在一定程度上提高编译调试的速度,但是按照代码按功能进行分离的划分方式仍然较为粗放,每次修改完代码后还是需要重新编译并且重新启动并运行项目才能进行测试,对于复杂功能的开发,其引用的源码会很多,每次编译及重新运行还是会花费大量的时间。
发明内容
本发明实施例提供一种代码调试方法、装置、电子设备及存储介质,以解决现有的代码调试过程耗时较长的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种代码调试方法,包括:
响应于检测到目标项目的代码产生变化,获取代码发生变化的目标代码文件;
基于所述目标代码文件生成动态库;
将所述动态库推送至所述目标项目对应的调试设备,以在所述调试设备中运行与所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
可选地,所述将所述动态库推送至所述目标项目对应的调试设备的步骤,包括:
响应于所述调试设备为用以编辑代码的终端中的模拟器,将所述终端中的所述动态库推送至所述调试设备;
响应于所述调试设备为独立于所述终端的实体设备,通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备;
其中,所述调试设备在接收到所述动态库后,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名,以针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
可选地,在所述将所述动态库推送至所述目标项目对应的调试设备的步骤之前,还包括:
分别在所述调试设备和所述终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。
可选地,所述基于所述目标代码文件生成动态库的步骤,包括:
对每个所述目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件;
对所述编译文件进行动态库打包,生成所述动态库,并对所述动态库进行签名,以对所述动态库进行签名校验。
可选地,所述类的方法包括类方法、实例方法中的至少一种。
第二方面,本发明实施例提供了一种代码调试方法,包括:
获取用以编辑代码的终端推送的针对目标项目的动态库;
在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效;
其中,所述动态库由所述终端在检测到所述目标项目的代码产生变化,基于发生变化的目标代码文件生成。
可选地,所述在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效的步骤,包括:
在运行所述目标项目对应的应用程序时,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名;
根据解析结果,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
第三方面,本发明实施例提供了一种代码调试装置,包括:
代码文件获取模块,用于响应于检测到目标项目的代码产生变化,获取代码发生变化的目标代码文件;
动态库生成模块,用于基于所述目标代码文件生成动态库;
动态库推送模块,用于将所述动态库推送至所述目标项目对应的调试设备,以在所述调试设备中运行与所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
可选地,所述动态库推送模块,包括:
第一动态库推送子模块,用于响应于所述调试设备为用以编辑代码的终端中的模拟器,将所述终端中的所述动态库推送至所述调试设备;
第二动态库推送子模块,用于响应于所述调试设备为独立于所述终端的实体设备,通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备;
其中,所述调试设备在接收到所述动态库后,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名,以针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
可选地,所述装置还包括:
通讯机制建立模块,用于分别在所述调试设备和所述终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。
可选地,所述动态库生成模块,包括:
编译子模块,用于对每个所述目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件;
动态库打包子模块,用于对所述编译文件进行动态库打包,生成所述动态库,并对所述动态库进行签名,以对所述动态库进行签名校验。
可选地,所述类的方法包括类方法、实例方法中的至少一种。
第四方面,本发明实施例提供了一种代码调试装置,包括:
动态库获取模块,用于获取用以编辑代码的终端推送的针对目标项目的动态库;
代码替换模块,用于在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效;
其中,所述动态库由所述终端在检测到所述目标项目的代码产生变化,基于发生变化的目标代码文件生成。
可选地,所述代码替换模块,包括:
动态库解析子模块,用于在运行所述目标项目对应的应用程序时,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名;
代码替换子模块,用于根据解析结果,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
第五方面,本发明实施例另外提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面和第二方面所述的任意一种代码调试方法的步骤。
第六方面,本发明实施例另外提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面和第二方面所述的任意一种代码调试方法的步骤。
在本发明实施例中,在对修改代码编译打包形成动态库并实时加载的基础上,通过在应用程序运行时替换类的方法,极大限度的降低了修改调试项目所用的时间,提高了开发效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中的一种代码调试方法的步骤流程图之一;
图2是本发明实施例中的一种代码调试方法的步骤流程图之二;
图3是本发明实施例中的一种代码调试方法的步骤流程图之三;
图4是本发明实施例中的一种代码调试方法的步骤流程图之四;
图5是本发明实施例中的一种代码调试装置的结构示意图之一;
图6是本发明实施例中的一种代码调试装置的结构示意图之二;
图7是本发明实施例中的一种代码调试装置的结构示意图之三;
图8是本发明实施例中的一种代码调试装置的结构示意图之四;
图9是本发明实施例中的另一种代码调试装置的结构示意图;
图10是本发明实施例中的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,示出了本发明实施例中一种代码调试方法的步骤流程图。
步骤110,响应于检测到目标项目的代码产生变化,获取代码发生变化的目标代码文件。
步骤120,基于所述目标代码文件生成动态库。
步骤130,将所述动态库推送至所述目标项目对应的调试设备,以在所述调试设备中运行与所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
在代码调试过程中,为了避免每次重新修改项目源代码的情况下,都需要重新编译并重启项目对应的应用程序,导致代码调试过程耗时较长,影响程序更新效率。因此,在本发明实施例中,可以在对修改代码编译打包形成动态库并实时加载的基础上,通过在应用程序运行时替换类的方法,从而实现的一种增量编译实时调试项目的方案,以有效降低代码调试的时间成本,提高代码调试效率。
而且由于同一项目中一般包含多个代码文件,但是在进行代码调试时,可以仅对其中部分代码文件进行编辑,因此在本发明实施例中,可以启动对目标项目的源代码的监听,监听目标项目的代码是否产生变化,如果检测到目标项目的代码产生变化,则可以从目标项目的各个代码文件中获取存在代码变化的目标代码文件,进而基于目标代码文件生成动态库。其中,动态库(Dynamic Link Library,DLL),又称动态链接库,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。DLL是一个包含可由多个程序同时使用的代码和数据的库。由此可见,生成动态库之后,应用程序的进程则可以随意调用动态库中的代码和数据等任意内容。
在本发明实施例中,可以通过任何可用方法监听目标项目的代码是否产生变化,并且在目标项目的代码产生变化的情况下,从目标项目的各个代码文件中获取存在代码变化的目标代码文件,并基于目标代码文件生成动态库,对此本发明实施例不加以限定。
例如,在用以编辑代码的终端的调试工程中修改了目标项目的代码并保存后,相应终端可以立即收到目标项目的代码文件发生改变的回调,在回调方法中可以使用终端自带的编译工具(例如iOS操作系统中的Xcode)脚本命令对代码发生变化的目标代码文件(例如iOS系统下的.m文件)进行重新编译,编译会生成对应的.o文件。
而在生成动态库之后,为了方便在调试设备中查看代码更改后的效果,则可以将动态库推送至所述目标项目对应的调试设备,那么当在调试设备中运行目标项目对应的应用程序时,即可以通过动态库中包含的每个类,替换所述调试设备中与所述类对应的原始类的方法,使变化代码生效。
对于调试设备而言,其在运行目标项目对应的应用程序时,如果没有接收到推送过来的动态库,则可以完全按照调试设备已安装的代码文件运行应用程序,而如果接收到动态库,此时,相应应用程序自身包含的类相对于动态库中包含的类可以理解为相应应用程序的原始类,那么如果相应应用程序处于运行状态,则可以直接通过引用动态库中包含的每个类,替换相应调试设备中与相应类对应的原始类。具体地,针对所述动态库中包含的每个类,可以将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,以使变化代码生效。
此时,由于动态库可以直接被引用,因此如果应用程序已处于运行状态,则无需重启相应应用程序即可以直接通过上述方式引用动态库中的类,从而替换与之对应的原始类。而且,由于动态库是基于存在代码变化的目标代码文件生成的,因此可以将变化代码注入当前运行的应用程序中,使得变化代码生效。
参照图2,在本发明实施例中,所述步骤130进一步可以包括:
步骤131,响应于所述调试设备为用以编辑代码的终端中的模拟器,将所述终端中的所述动态库推送至所述调试设备。
步骤132,响应于所述调试设备为独立于所述终端的实体设备,通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备;其中,所述调试设备在接收到所述动态库后,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名,以针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
在实际应用中,调试设备可以为虚拟的模拟器,也可以为真实的实体装置(例如手机等)。而且,如果调试设备为模拟器,那么则可以将其运行在用以编辑代码的终端(例如电脑等),那么此时在推送动态库时,则可以直接将终端中的动态库推送至作为调试设备的模拟器中;而如果调试设备为独立于所述终端的实体设备,那么为了方便在终端和实体设备之间进行动态库的推送,则可以预先在调试设备和终端之间预先建立通讯机制,进而通过相应的通讯机制将所述终端中的所述动态库推送至所述调试设备。
其中,在本发明实施例中,可以通过任何可用方式在调试设备和终端之间建立通讯机制,对此本发明实施例不加以限定。例如,可以分别在调试设备和终端中设置用以传送动态库的数据接口,进而建立调试设备和终端之间的通讯机制。另外,不管调试设备为终端中的模拟器还是独立于终端的实体设备,为了避免终端向调试设备误推送其他数据,导致代码调试异常,影响代码调试效果,在终端和调试设备之间都可以预先建立通讯机制,以便在动态库生成后,在将推送库推送至调试设备之前,终端可以通过相应通讯机制与调试设备之间进行通讯交互,以保证将动态库推送至调试设备。
例如,动态库生成后,在将动态库推送至调试设备之前,终端可以通过相应的通讯机制通知调试设备要将动态库推送至调试设备,如果接收到调试设备针对相应通知的应答指令,那么则可以将动态库推送至调试设备。
另外,对于调试设备为用以编辑代码的终端中的模拟器的情况,在推送动态库时,根据需求也可以通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备,对此本发明实施例不加以限定。
调试设备在接收到动态库之后,为了基于动态库中包含的类替换应用程序中与之对应的类,那么首先需要分别确定动态库中包含的类名和方法名,如上述库从本质上来说是一种可执行代码的二进制格式,因此动态库中一般是二进制形式的数据,此时很难直接获知其中包含的类和方法、以及类和方法在动态库中的地址等内容,同时,调试设备在接收到动态库之后,在进行加载动态库时,可以先通过对应用以加载的方法(例如iOS中为dlopen函数)把动态库加载到当前运行的需要调试的App进程(以及目标项目对应的应用程序)中。而且,大部分的动态库都是需要符号表才能正确解析类名和方法名的,所以在加载动态库时可以拿到动态库对应的符号表用来解析其中的类名和方法名,地址和类名、方法名的对应关系,等等。
因此在本发明实施例中,为了进行类的替换,调试设备在接收到所述动态库后,则可以将所述动态库加载至所述目标项目对应的应用程序进程中,而且在加载过程中可以基于动态库对应的符号表解析所述动态库中的类名和方法名,地址和类名、方法名的对应关系等信息,在解析完成后,针对所述动态库中包含的每个类,根据其中每个类以及其中每个方法在动态库中的地址,从相应动态库中获取相应的类、方法等,进而则可以将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。此时,新修改的代码即可以在不编译运行及重启应用程序的情况下即可以直接生效,可以有效提高代码调试效率。例如,针对所述动态库中包含的每个类,则可以将所述类中所有类方法和实例方法都替换至所述调试设备中与所述类对应的原始类中。
其中,在本发明实施例中,可以通过任何可用方法获取动态库对应的符号表,对此本发明实施例不加以限定。
另外,在实际应用中,一个代码文件中可以仅包括一个类的相关代码,也可以在一个代码文件中设置多个类的相关代码,而且在编辑代码时,可以仅对代码文件中的部分代码进行编辑,也即仅涉及代码文件中的部分类。但是在本发明实施例中,在生成动态库时,是以代码文件为单位,基于代码发生变化的目标代码文件生成动态库,那么在后续类替换时,不管类对应的代码是否被编辑,都会进行替换。
因此在本发明实施例中,为了避免对未变化的类进行替换,影响代码调试效率同时导致资源浪费,在编辑代码时,也可以预先针对代码发生变化的类设置一预设标识,那么后续在调试设备中进行类替换时,则可以根据预设标识,在动态库中查找存在代码变化的类,进而仅针对动态库存在代码变化的类,将相应类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
参照图3,在本发明实施例中,在步骤130之前,还可以包括:
步骤140,分别在所述调试设备和所述终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。
如上述,为了推送动态库,可以预先在调试设备和终端之间建立通讯机制。优选地,在本发明实施例中,可以通过套接字(socket)服务以建立通讯机制。具体地址,则可以分别在调试设备和终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API)。
那么在本发明实施例,分别在调试设备和所述终端中设置并运行套接字服务,那么则可以在调试设备和所述终端之间建立双向的通信连接,实现通讯机制。
而且,在本发明实施例中,可以通过任何可用方式在所述调试设备和所述终端中设置并运行套接字服务,对此本发明实施例不加以限定。例如,可以在用以编辑代码的终端启动后,在其后台运行一个socket(套接字)服务用于和调试设备通讯,相应地,也可以在调试设备的后台运行一个socket服务用于和终端通讯。
参照图2,在本发明实施例中,所述步骤120进一步可以包括:
步骤121,对每个所述目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件;
步骤122,对所述编译文件进行动态库打包,生成所述动态库,并对所述动态库进行签名,以对所述动态库进行签名校验。
在实际应用中,代码文件是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。但是,应用程序在运行时,需要将代码文件转换为二进制形式,也即动态库中包含的数据应为二进制形式,那么为了生成动态库,则需要对每个目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件,进而可以对全部的编译文件进行动态库打包,生成所述动态库。
在本发明实施例中,可以通过任何可用方法对目标代码文件进行编译,对此本发明实施例不加以限定。例如,可以使用终端自带编译工具(例如iOS中的Xcode)脚本命令对目标代码文件(.m文件)进行重新编译,编译会生成对应的.o文件,即为编译文件。使用编译后生成的.o文件通过编译工具命令(例如iOS中为clang命令)在进行环境配置后进行动态库打包,生成动态库。
另外,由于大部分的开发工具都会对动态库进行签名校验,所以还需要对新生成的动态库进行签名。在本发明实施例中,也可以通过任何可用方法对新生成的动态库进行签名,对此本发明实施例不加以限定。例如,可以使用终端的编译工具(例如iOS中为Xcode)通过相应的用以签名的脚本命令进行签名,等等。
可选地,在本发明实施例中,所述类中的方法包括类方法、实例方法中的至少一种。
其中,声明方法的开头为正号(+)的通知编译器表示为类方法(classmethod)。类方法属于类对象而不是类的实例对象,通常用于创建新的实例。可以称这种用来创建新对象的类方法为工厂方法(factorymethod)。如果某个方法所实现的是很通用的功能,比如创建一个实例对象或访问一些全局类数据,最好声明为类方法。而声明方法的开头为负号(-)的通知编译器表示为实例方法;在指定的对象实例中起作用。
参照图3,示出了本发明实施例中一种代码调试方法的步骤流程图。
步骤210,获取用以编辑代码的终端推送的针对目标项目的动态库;
步骤220,在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效;其中,所述动态库由所述终端在检测到所述目标项目的代码产生变化,基于发生变化的目标代码文件生成。
参照图4,在本发明实施例中,所述步骤220进一步可以包括:
步骤221,在运行所述目标项目对应的应用程序时,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名;
步骤222,根据解析结果,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
图3和图4所示实施例的具体执行过程与上述图1和图2所示过程类似,具体可以参照上述内容,在此不加以赘述。
参照图5,示出了本发明实施例中一种代码调试装置的结构示意图。
本发明实施例的代码调试装置包括:代码文件获取模块310、动态库生成模块320和动态库推送模块330。
下面分别详细介绍各模块的功能以及各模块之间的交互关系。
代码文件获取模块310,用于响应于检测到目标项目的代码产生变化,获取代码发生变化的目标代码文件;
动态库生成模块320,用于基于所述目标代码文件生成动态库;
动态库推送模块330,用于将所述动态库推送至所述目标项目对应的调试设备,以在所述调试设备中运行与所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
参照图6,在本发明实施例中,所述动态库推送模块330,进一步可以包括:
第一动态库推送子模块331,用于响应于所述调试设备为用以编辑代码的终端中的模拟器,将所述终端中的所述动态库推送至所述调试设备;
第二动态库推送子模块332,用于响应于所述调试设备为独立于所述终端的实体设备,通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备;其中,所述调试设备在接收到所述动态库后,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名,以针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
参照图6,在本发明实施例中,所述装置还可以包括:
通讯机制建立模块340,用于分别在所述调试设备和所述终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。
参照图6,在本发明实施例中,所述动态库生成模块320,进一步可以包括:
编译子模块321,用于对每个所述目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件;
动态库打包子模块322,用于对所述编译文件进行动态库打包,生成所述动态库,并对所述动态库进行签名,以对所述动态库进行签名校验。
可选地,在本发明实施例中,所述类的方法包括类方法、实例方法中的至少一种。
参照图7,示出了本发明实施例中一种代码调试装置的结构示意图。
本发明实施例的代码调试装置包括:动态库获取模块410和代码替换模块420。
下面分别详细介绍各模块的功能以及各模块之间的交互关系。
动态库获取模块410,用于获取用以编辑代码的终端推送的针对目标项目的动态库;
代码替换模块420,用于在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效;其中,所述动态库由所述终端在检测到所述目标项目的代码产生变化,基于发生变化的目标代码文件生成。
参照图8,在本发明实施例中,所述代码替换模块420,进一步可以包括:
动态库解析子模块421,用于在运行所述目标项目对应的应用程序时,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名;
代码替换子模块422,用于根据解析结果,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
本发明实施例提供的代码调试装置能够实现图1至图4的方法实施例中实现的各个过程,为避免重复,这里不再赘述。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述代码调试方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述代码调试方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(RandomAccess Memory,简称RAM)、磁碟或者光盘等。
优选的,本发明实施例还提供了一种代码调试系统,包括:如上述的任意一种调试设备和任意一种用以编辑代码的终端。
图9为实现本发明各个实施例的一种电子设备的硬件结构示意图。
该电子设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
应理解的是,本发明实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
电子设备通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与电子设备500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。
输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(Graphics Processing Unit,GPU)5041和麦克风5042,图形处理器5041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
电子设备500还包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在电子设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元506用于显示由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板5061。
用户输入单元507可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。虽然在图9中,触控面板5071与显示面板5061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现电子设备的输入和输出功能,具体此处不做限定。
接口单元508为外部装置与电子设备500连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元508可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备500内的一个或多个元件或者可以用于在电子设备500和外部装置之间传输数据。
存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器510是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
电子设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,电子设备500包括一些未示出的功能模块,在此不再赘述。
图10是根据一示例性实施例示出的一种电子设备600的框图。例如,电子设备600可以被提供为一服务器。参照图10,电子设备600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器632所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如应用程序。存储器632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行上述多媒体资源分享方法。
电子设备600还可以包括一个电源组件626被配置为执行装置600的电源管理,一个有线或无线网络接口650被配置为将装置600连接到网络,和一个输入输出(I/O)接口658。电子设备600可以操作基于存储在存储器632的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM,等等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种代码调试方法,其特征在于,包括:
响应于检测到目标项目的代码产生变化,获取代码发生变化的目标代码文件;
基于所述目标代码文件生成动态库;
将所述动态库推送至所述目标项目对应的调试设备,以在所述调试设备中运行与所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
2.根据权利要求1所述的方法,其特征在于,所述将所述动态库推送至所述目标项目对应的调试设备的步骤,包括:
响应于所述调试设备为用以编辑代码的终端中的模拟器,将所述终端中的所述动态库推送至所述调试设备;
响应于所述调试设备为独立于所述终端的实体设备,通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备;
其中,所述调试设备在接收到所述动态库后,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名,以针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
3.根据权利要求2所述的方法,其特征在于,在所述将所述动态库推送至所述目标项目对应的调试设备的步骤之前,还包括:
分别在所述调试设备和所述终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述基于所述目标代码文件生成动态库的步骤,包括:
对每个所述目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件;
对所述编译文件进行动态库打包,生成所述动态库,并对所述动态库进行签名,以对所述动态库进行签名校验。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述类的方法包括类方法、实例方法中的至少一种。
6.一种代码调试方法,其特征在于,包括:
获取用以编辑代码的终端推送的针对目标项目的动态库;
在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效;
其中,所述动态库由所述终端在检测到所述目标项目的代码产生变化,基于发生变化的目标代码文件生成。
7.根据权利要求6所述的方法,其特征在于,所述在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效的步骤,包括:
在运行所述目标项目对应的应用程序时,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名;
根据解析结果,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
8.一种代码调试装置,其特征在于,包括:
代码文件获取模块,用于响应于检测到目标项目的代码产生变化,获取代码发生变化的目标代码文件;
动态库生成模块,用于基于所述目标代码文件生成动态库;
动态库推送模块,用于将所述动态库推送至所述目标项目对应的调试设备,以在所述调试设备中运行与所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
9.根据权利要求8所述的装置,其特征在于,所述动态库推送模块,包括:
第一动态库推送子模块,用于响应于所述调试设备为用以编辑代码的终端中的模拟器,将所述终端中的所述动态库推送至所述调试设备;
第二动态库推送子模块,用于响应于所述调试设备为独立于所述终端的实体设备,通过在所述调试设备和所述终端之间预先建立的通讯机制,将所述终端中的所述动态库推送至所述调试设备;
其中,所述调试设备在接收到所述动态库后,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名,以针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
通讯机制建立模块,用于分别在所述调试设备和所述终端中设置并运行套接字服务,以在所述调试设备和所述终端之间建立通讯机制。
11.根据权利要求8-10中任一项所述的装置,其特征在于,所述动态库生成模块,包括:
编译子模块,用于对每个所述目标代码文件进行重新编译,得到每个所述目标代码文件的编译文件;
动态库打包子模块,用于对所述编译文件进行动态库打包,生成所述动态库,并对所述动态库进行签名,以对所述动态库进行签名校验。
12.根据权利要求8-10中任一项所述的装置,其特征在于,所述类的方法包括类方法、实例方法中的至少一种。
13.一种代码调试装置,其特征在于,包括:
动态库获取模块,用于获取用以编辑代码的终端推送的针对目标项目的动态库;
代码替换模块,用于在运行所述目标项目对应的应用程序时,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效;
其中,所述动态库由所述终端在检测到所述目标项目的代码产生变化,基于发生变化的目标代码文件生成。
14.根据权利要求13所述的装置,其特征在于,所述代码替换模块,包括:
动态库解析子模块,用于在运行所述目标项目对应的应用程序时,将所述动态库加载至所述目标项目对应的应用程序进程中,并基于符号表解析所述动态库中的类名和方法名;
代码替换子模块,用于根据解析结果,针对所述动态库中包含的每个类,将所述类中所有方法替换至所述调试设备中与所述类对应的原始类中,使变化代码生效。
15.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的代码调试方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的代码调试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010421044.7A CN111723002A (zh) | 2020-05-18 | 2020-05-18 | 一种代码调试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010421044.7A CN111723002A (zh) | 2020-05-18 | 2020-05-18 | 一种代码调试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111723002A true CN111723002A (zh) | 2020-09-29 |
Family
ID=72564662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010421044.7A Pending CN111723002A (zh) | 2020-05-18 | 2020-05-18 | 一种代码调试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723002A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486836A (zh) * | 2020-12-09 | 2021-03-12 | 北京展心展力信息科技有限公司 | 调试发布包的方法、装置、电子设备及介质 |
CN112579470A (zh) * | 2020-12-29 | 2021-03-30 | 中国科学院计算机网络信息中心 | 一种软件动态库调试的编译链接方法及系统 |
CN113127374A (zh) * | 2021-05-19 | 2021-07-16 | 支付宝(杭州)信息技术有限公司 | 应用于iOS设备的应用程序测试方法及装置 |
CN113342436A (zh) * | 2021-06-10 | 2021-09-03 | 网易(杭州)网络有限公司 | 一种游戏翻译方法和装置 |
CN113760235A (zh) * | 2021-09-10 | 2021-12-07 | 深圳市太美亚电子科技有限公司 | 一种ble开发调试系统及方法 |
CN117130825A (zh) * | 2023-01-30 | 2023-11-28 | 荣耀终端有限公司 | 防止电子设备异常运行的方法及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561800A (en) * | 1993-05-19 | 1996-10-01 | Hewlett-Packard Company | Method and apparatus for incrementally linking modified routines into software |
US6490721B1 (en) * | 1998-07-14 | 2002-12-03 | Oc Systems Incorporated | Software debugging method and apparatus |
CN104391717A (zh) * | 2014-11-18 | 2015-03-04 | 南京大学 | 一种调试时代码动态更新方法 |
CN105630491A (zh) * | 2015-12-18 | 2016-06-01 | Tcl集团股份有限公司 | 程序的功能变更方法及装置 |
CN106897080A (zh) * | 2015-12-18 | 2017-06-27 | 北京国双科技有限公司 | 动态链接库的处理方法及装置 |
CN109460235A (zh) * | 2018-10-09 | 2019-03-12 | 珠海格力电器股份有限公司 | 组态软件编译方法 |
CN110059456A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
-
2020
- 2020-05-18 CN CN202010421044.7A patent/CN111723002A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561800A (en) * | 1993-05-19 | 1996-10-01 | Hewlett-Packard Company | Method and apparatus for incrementally linking modified routines into software |
US6490721B1 (en) * | 1998-07-14 | 2002-12-03 | Oc Systems Incorporated | Software debugging method and apparatus |
CN104391717A (zh) * | 2014-11-18 | 2015-03-04 | 南京大学 | 一种调试时代码动态更新方法 |
CN105630491A (zh) * | 2015-12-18 | 2016-06-01 | Tcl集团股份有限公司 | 程序的功能变更方法及装置 |
CN106897080A (zh) * | 2015-12-18 | 2017-06-27 | 北京国双科技有限公司 | 动态链接库的处理方法及装置 |
CN109460235A (zh) * | 2018-10-09 | 2019-03-12 | 珠海格力电器股份有限公司 | 组态软件编译方法 |
CN110059456A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486836A (zh) * | 2020-12-09 | 2021-03-12 | 北京展心展力信息科技有限公司 | 调试发布包的方法、装置、电子设备及介质 |
CN112486836B (zh) * | 2020-12-09 | 2024-04-09 | 北京展心展力信息科技有限公司 | 调试发布包的方法、装置、电子设备及介质 |
CN112579470A (zh) * | 2020-12-29 | 2021-03-30 | 中国科学院计算机网络信息中心 | 一种软件动态库调试的编译链接方法及系统 |
CN113127374A (zh) * | 2021-05-19 | 2021-07-16 | 支付宝(杭州)信息技术有限公司 | 应用于iOS设备的应用程序测试方法及装置 |
CN113342436A (zh) * | 2021-06-10 | 2021-09-03 | 网易(杭州)网络有限公司 | 一种游戏翻译方法和装置 |
CN113342436B (zh) * | 2021-06-10 | 2023-03-17 | 网易(杭州)网络有限公司 | 一种游戏翻译方法和装置 |
CN113760235A (zh) * | 2021-09-10 | 2021-12-07 | 深圳市太美亚电子科技有限公司 | 一种ble开发调试系统及方法 |
CN113760235B (zh) * | 2021-09-10 | 2023-12-19 | 深圳市太美亚电子科技有限公司 | 一种ble开发调试系统及方法 |
CN117130825A (zh) * | 2023-01-30 | 2023-11-28 | 荣耀终端有限公司 | 防止电子设备异常运行的方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111723002A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN106502906B (zh) | 一种测试应用程序的方法和装置 | |
CN109857403B (zh) | 一种页面更新、页面处理方法及装置 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
CN111142930B (zh) | 安装包文件打包方法、装置、终端设备及存储介质 | |
CN108536594B (zh) | 页面测试方法、装置及存储设备 | |
CN105404585A (zh) | 获取代码覆盖率的方法及装置 | |
CN110196795B (zh) | 检测移动终端应用运行状态的方法及相关装置 | |
CN105847325B (zh) | 应用客户端的调试方法及装置 | |
CN112052008A (zh) | 代码检查方法、装置、计算机设备及计算机可读存储介质 | |
CN104123218A (zh) | 一种代码覆盖测试方法、装置和系统 | |
CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
CN112084747A (zh) | 一种资源管理方法、装置、电子设备及存储介质 | |
CN112667223A (zh) | 组件配置表的生成方法、装置、电子设备及存储介质 | |
CN109240902B (zh) | 一种获取电子设备的固件代码的方法和装置 | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
CN110765085A (zh) | 日志信息写入方法、系统、存储介质及移动终端 | |
CN108664389B (zh) | 一种测试方法、装置及终端 | |
CN110032394B (zh) | 一种无源码文件的分析方法、装置和存储介质 | |
CN105528220B (zh) | 加载动态共享对象的方法和装置 | |
CN111897726A (zh) | 异常定位方法、装置、存储介质及移动终端 | |
CN111562910A (zh) | 一种封装方法及相关设备 | |
CN110879709A (zh) | 无用代码的检测方法、装置、终端设备及存储介质 | |
CN107918583B (zh) | 一种脚本动态调试方法、装置及终端 | |
CN115600213A (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 |