CN115878455A - 一种基于代码模块中局部变量的处理方法和装置 - Google Patents
一种基于代码模块中局部变量的处理方法和装置 Download PDFInfo
- Publication number
- CN115878455A CN115878455A CN202211376061.9A CN202211376061A CN115878455A CN 115878455 A CN115878455 A CN 115878455A CN 202211376061 A CN202211376061 A CN 202211376061A CN 115878455 A CN115878455 A CN 115878455A
- Authority
- CN
- China
- Prior art keywords
- function
- local variable
- index information
- target local
- determining
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种基于代码模块中局部变量的处理方法和装置,所述方法包括:在开发测试的过程中,确定代码模块中目标局部变量的索引信息;基于所述索引信息,在进程内存中对所述目标局部变量的值进行修改。通过本发明实施例,实现了基于索引信息直接在进程内存修改代码模块中局部变量的值,一方面不需要直接修改代码文本,避免了在直接修改代码文本后忘记还原导致误提交至版本库,且不需要重启进程、不需要申请代码提交权限,提升了测试效率,另一方面,无需在将局部变量更改为全局变量后再进行修改,符合程序设计原则。
Description
技术领域
本发明涉及开发测试领域,特别是涉及一种基于代码模块中局部变量的处理方法和装置。
背景技术
在开发测试的过程中,通常需要调整代码模块中某个局部(Local)变量的值,以达到覆盖测试、边界测试的目的。
在现有技术中,通常采用以下方案来修改局部变量的值:
在一种方案中,可以直接在文本代码中修改局部变量的值,在重启进程后生效,由于每次修改都需要重启进程,影响测试效率,且若在文本代码中修改局部变量的值之后忘记还原,将会导致误提交至版本库。
而且,这种方案仅限于有代码提交权限的程序员,其他用户需要在申请代码提交权限后才能直接在文本代码中修改局部变量的值。
在另一种方案中,可以直接将局部变量更改为全局变量,由于全局变量可以直接操作,则可以对其进行赋值,但这种方案不符合程序设计原则。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种基于代码模块中局部变量的处理方法和装置,包括:
一种基于代码模块中局部变量的处理方法,包括:
在开发测试的过程中,确定代码模块中目标局部变量的索引信息;
基于索引信息,在进程内存中对目标局部变量的值进行修改。
可选地,在开发测试的过程中,确定代码模块中目标局部变量的索引信息,包括:
在开发测试的过程中,确定代码模块中全部的导出函数;
基于导出函数,确定目标局部变量的索引信息。
可选地,基于导出函数,确定目标局部变量的索引信息,包括:
针对每个导出函数,确定其引用的上文对象集合;其中,上文对象集合包含代码模块中在当前函数外部定义的局部变量和局部函数;
基于导出函数引用的上文对象集合,确定目标局部变量的索引信息。
可选地,基于导出函数引用的上文对象集合,确定目标局部变量的索引信息,包括:
若导出函数引用的上文对象集合不包含目标局部变量,重复执行针对当前获得的上文对象集合中每个局部函数,确定其引用的上文对象集合,直至在当前获得的上文对象集合包含目标局部变量;
根据引用目标局部变量的局部函数,确定目标局部变量的索引信息。
可选地,基于导出函数引用的上文对象集合,确定目标局部变量的索引信息,包括:
若导出函数引用的上文对象集合包含目标局部变量,根据引用目标局部变量的导出函数,确定目标局部变量的索引信息。
可选地,索引信息包括引用目标局部变量的函数标识和在函数中的引用序号。
可选地,还包括:
基于修改后的目标局部变量进行调试。
一种基于代码模块中局部变量的处理装置,包括:
索引信息确定模块,用于在开发测试的过程中,确定代码模块中目标局部变量的索引信息;
进程内存中修改模块,用于基于索引信息,在进程内存中对目标局部变量的值进行修改。
一种电子设备,包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上的基于代码模块中局部变量的处理方法。
一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上的基于代码模块中局部变量的处理方法。
本发明实施例具有以下优点:
在本发明实施例中,通过在开发测试的过程中,确定代码模块中目标局部变量的索引信息,基于索引信息,在进程内存中对目标局部变量的值进行修改,实现了基于索引信息直接在进程内存修改代码模块中局部变量的值,一方面不需要直接修改代码文本,避免了在直接修改代码文本后忘记还原导致误提交至版本库,且不需要重启进程、不需要申请代码提交权限,提升了测试效率,另一方面,无需在将局部变量更改为全局变量后再进行修改,符合程序设计原则。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种基于代码模块中局部变量的处理方法的步骤流程图;
图2是本发明一实施例提供的另一种基于代码模块中局部变量的处理方法的步骤流程图;
图3是本发明一实施例提供的一种基于代码模块中局部变量的处理装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,示出了本发明一实施例提供的一种基于代码模块中局部变量的处理方法的步骤流程图,具体可以包括如下步骤:
步骤101,在开发测试的过程中,确定代码模块中目标局部变量的索引信息。
其中,代码模块可以为基于Lua(一种高级动态编程语言)编程的,其可以为用于实现游戏中功能的代码模块,如游戏中图形界面、操作玩法等。
例如,对于UTIL.lua模块,其可以定义如下代码文本:
在开发测试的过程中,如覆盖测试、边界测试,其需要修改代码模块中局部变量的值来进行调试,如上文代码文本中修改局部变量Factor的值从3修改为6,在边界测试的过程中,需要将局部变量的值修改为较大的临界值。
由于局部变量为代码模块内部定义的,其不能采用全局变量的方式进行直接赋值修改,可以先查询待修改的目标局部变量的索引信息。
在本发明一实施例中,步骤101,可以包括:
子步骤11,在开发测试的过程中,确定代码模块中全部的导出函数。
在实际应用中,代码模块内部定义的导出(Export)函数是非局部的,其能够直接被外部使用,则可以先确定代码模块中全部的导出函数。
如上文代码文本中,导出函数Calc(其定义时未添加local标志),具体实现可以采用如下:
for K,V in pairs(UTIL)//获得UTIL模块的全部导出函数
子步骤12,基于导出函数,确定目标局部变量的索引信息。
对于局部变量而言,都要提供一定的作用进而被外部使用,可以是直接被导出函数引用,进而通过导出函数被外部使用,也可以被与导出函数关联的其他函数引用(与导出函数关联的其他函数包括导出函数直接引用的其他函数,或被其他函数引用的函数),进而通过导出函数被外部使用,也即是说,局部变量最终都会通过导出函数被外部使用。
基于此,可以通过遍历代码模块中全部的导出函数,直至查找到引用目标局部变量的函数,进而可以确定目标局部变量的索引信息。
在本发明一实施例中,子步骤12,可以包括:
子步骤121,针对每个导出函数,确定其引用的上文对象集合;其中,上文对象集合包含代码模块中在当前函数外部定义的局部变量和局部函数。
对于代码模块中的局部变量而言,其可以包括直接定义在代码模块中的局部变量,不是在代码模块的其他函数中定义的,还可以包括在代码模块中的其他函数中定义的局部变量。在部分编程语言中,如Luc,函数对这两种局部变量都可以进行引用,也可以在函数中引用其他的局部函数。
对于代码模块中某个函数而言,当其引用代码模块中在自身外部定义的局部变量(包括直接定义在代码模块中的局部变量和在代码模块中的其他函数中定义的局部变量)或局部函数,这些局部变量和局部函数即为其引用的上文对象(upvalue)。
如在上文代码文本中,导出函数Calc引用了局部函数Inc、局部函数Check,则局部函数Inc、局部函数Check即为就是导出函数Calc的upvalue,局部函数Inc引用了局部变量Factor,则局部变量Factor即为就是局部函数In的upvalue。
基于此,对每个导出函数,可以获取其引用的全部上文对象,进而可以得到上文对象集合。具体的,在Lua语言中,提供了debug.getupvalue函数来实现查找上文对象,debug.getupvalue(Func,Index)的作用就是返回函数Func中索引Index所对应的upvalue。
如对于上文中代码文本,通过debug.getupvalue(Calc,1|2),即可以获取到导出函数Calc引用的第1个局部函数Check和第2个局部函数Inc的名和值,具体实现可以采用如下:
for K,Func in pairs(Export)do debug.getupvalue(Func,N)//取每个导出函数中的全部upvalue,将其存放至上文对象集合allUpval[2]中,进而可以得到上文对象集合allUpval[2]={Inc,Check}。
子步骤122,基于导出函数引用的上文对象集合,确定目标局部变量的索引信息。
在确定导出函数引用的上文对象集合后,可以确定目标局部变量要么直接导出函数引用,要么与导出函数关联的其他函数引用,则可以通过导出函数引用的上文对象集合,逐步确定目标局部变量的索引信息。
在本发明一实施例中,子步骤122,可以包括:
子步骤1221,若导出函数引用的上文对象集合不包含目标局部变量,重复执行针对当前获得的上文对象集合中每个局部函数,确定其引用的上文对象集合,直至在当前获得的上文对象集合包含目标局部变量。
在导出函数引用的上文对象集合不包含目标局部变量的情况下,即导出函数没有直接引用目标局部变量,则可以从导出函数引用的上文对象集合中,确定其引用的局部函数,然后进一步确定局部函数引用的上文对象集合。
若局部函数引用的上文对象集合依然不包含目标局部变量,则可以重复执行确定当前获得到上文对象集合中局部函数引用的上文对象集合的操作,直至在某个上文对象集合包含目标局部变量。
如对于上文中代码文本,导出函数Calc引用上文对象集合仅包含局部函数Check、局部函数Inc,未包含目标局部变量Factor,则可以进一步通过debug.getupvalue(Inc,N)、debug.getupvalue(Check,N),获取局部函数Check、局部函数Inc引用的上文对象集合,进而可以发现局部函数Inc引用的上文对象集合中包含目标局部变量Factor,具体实现可以采用如下:
for K,Func in pairs(AllUpv[2])do debug.getupvalue(Func,N)//取上文对象集合AllUpv[2]中每个的局部函数的全部upvalue,将存放至上文对象集合AllUpval[3]中,对于局部函数Inc,得到上文对象集合AllUpval[3]={Factor}。
子步骤1222,根据引用目标局部变量的局部函数,确定目标局部变量的索引信息。
在确定某个上文对象集合中包含目标局部变量后,即可以确定引用目标局部变量的局部函数,进而根据该局部函数,确定目标局部变量的索引信息,索引信息可以包括引用目标局部变量的函数标识和在函数中的引用序号。
如对于上文中代码文本,目标局部变量Factor为局部函数Inc引用的第1个上文对象,其索引信息可以为函数标识Inc和引用序号6。
在本发明一实施例中,子步骤122,还可以包括:
子步骤1223,若导出函数引用的上文对象集合包含目标局部变量,根据引用目标局部变量的导出函数,确定目标局部变量的索引信息。
在导出函数引用的上文对象集合包含目标局部变量的情况下,即导出函数直接引用目标局部变量,进而根据该导出函数,确定目标局部变量的索引信息,索引信息包括引用目标局部变量的函数标识和在函数中的引用序号。
步骤102,基于索引信息,在进程内存中对目标局部变量的值进行修改。
在确定目标局部变量的索引信息后,可以获取待修改的目标值,直接在进程内存中根据索引信息找到目标局部变量,然后将目标局部变量的值修改为目标值,无需修改代码文本。
具体的,在Lua语言中,提供了debug.setupvalue函数来实现修改上文对象的值,debug.setupvalue(Func,Index,NewValue)的作用就是将函数Func中索引Index所对应的upvalue的值修改为目标值NewValue。
如对于上文中代码文本,目标局部变量Factor为局部函数Inc引用的第1个上文对象,其索引信息可以为函数标识Inc和引用序号6,要将目标局部变量Factor的值修改为6,则可以调用debug.setupvalue(Inc,1,6),进而可以将内存中目标局部变量Factor的值改为6。
在本发明一实施例中,还可以包括:
基于修改后的目标局部变量进行调试。
在修改目标局部变量的值后,则可以直接进行调试,无需重启进程。
在本发明实施例中,通过在开发测试的过程中,确定代码模块中目标局部变量的索引信息,基于索引信息,在进程内存中对目标局部变量的值进行修改,实现了基于索引信息直接在进程内存修改代码模块中局部变量的值,一方面不需要直接修改代码文本,避免了在直接修改代码文本后忘记还原导致误提交至版本库,且不需要重启进程、不需要申请代码提交权限,提升了测试效率,另一方面,无需在将局部变量更改为全局变量后再进行修改,符合程序设计原则。
参照图2,示出了本发明一实施例提供的另一基于代码模块中局部变量的处理方法的步骤流程图,具体可以包括如下步骤:
步骤201,在开发测试的过程中,确定代码模块中全部的导出函数。
在实际应用中,代码模块内部定义的导出(Export)函数是非局部的,其能够直接被外部使用,则可以先确定代码模块中全部的导出函数。
如上文代码文本中,导出函数Calc(其定义时未添加local标志),具体实现可以采用如下:
for K,V in pairs(UTIL)//获得UTIL模块的全部导出函数
步骤202,针对每个导出函数,确定其引用的上文对象集合;其中,上文对象集合包含代码模块中在当前函数外部定义的局部变量和局部函数。
对于代码模块中的局部变量而言,其可以包括直接定义在代码模块中的局部变量,不是在代码模块的其他函数中定义的,还可以包括在代码模块中的其他函数中定义的局部变量。在部分编程语言中,如Luc,函数对这两种局部变量都可以进行引用,也可以在函数中引用其他的局部函数。
对于代码模块中某个函数而言,当其引用代码模块中在自身外部定义的局部变量(包括直接定义在代码模块中的局部变量和在代码模块中的其他函数中定义的局部变量)或局部函数,这些局部变量和局部函数即为其引用的上文对象(upvalue)。
如在上文代码文本中,导出函数Calc引用了局部函数Inc、局部函数Check,则局部函数Inc、局部函数Check即为就是导出函数Calc的upvalue,局部函数Inc引用了局部变量Factor,则局部变量Factor即为就是局部函数In的upvalue。
基于此,对每个导出函数,可以获取其引用的全部上文对象,进而可以得到上文对象集合。具体的,在Lua语言中,提供了debug.getupvalue函数来实现查找上文对象,debug.getupvalue(Func,Index)的作用就是返回函数Func中索引Index所对应的upvalue。
如对于上文中代码文本,通过debug.getupvalue(Calc,1|2),即可以获取到导出函数Calc引用的第1个局部函数Check和第2个局部函数Inc的名和值,具体实现可以采用如下:
for K,Func in pairs(Export)do debug.getupvalue(Func,N)//取每个导出函数中的全部upvalue,将其存放至上文对象集合allUpval[2]中,进而可以得到上文对象集合allUpval[2]={Inc,Check}。
步骤203,若导出函数引用的上文对象集合不包含目标局部变量,重复执行针对当前获得的上文对象集合中每个局部函数,确定其引用的上文对象集合,直至在当前获得的上文对象集合包含目标局部变量,并根据引用目标局部变量的局部函数,确定目标局部变量的索引信息。
在导出函数引用的上文对象集合不包含目标局部变量的情况下,即导出函数没有直接引用目标局部变量,则可以从导出函数引用的上文对象集合中,确定其引用的局部函数,然后进一步确定局部函数引用的上文对象集合。
若局部函数引用的上文对象集合依然不包含目标局部变量,则可以重复执行确定当前获得到上文对象集合中局部函数引用的上文对象集合的操作,直至在某个上文对象集合包含目标局部变量。
如对于上文中代码文本,导出函数Calc引用上文对象集合仅包含局部函数Check、局部函数Inc,未包含目标局部变量Factor,则可以进一步通过debug.getupvalue(Inc,N)、debug.getupvalue(Check,N),获取局部函数Check、局部函数Inc引用的上文对象集合,进而可以发现局部函数Inc引用的上文对象集合中包含目标局部变量Factor,具体实现可以采用如下:
for K,Func in pairs(AllUpv[2])do debug.getupvalue(Func,N)//取上文对象集合AllUpv[2]中每个的局部函数的全部upvalue,将存放至上文对象集合AllUpval[3]中,对于局部函数Inc,得到上文对象集合AllUpval[3]={Factor}。
在确定某个上文对象集合中包含目标局部变量后,即可以确定引用目标局部变量的局部函数,进而根据该局部函数,确定目标局部变量的索引信息,索引信息可以包括引用目标局部变量的函数标识和在函数中的引用序号。
如对于上文中代码文本,目标局部变量Factor为局部函数Inc引用的第1个上文对象,其索引信息可以为函数标识Inc和引用序号6。
步骤204,若导出函数引用的上文对象集合包含目标局部变量,根据引用目标局部变量的导出函数,确定目标局部变量的索引信息。
在导出函数引用的上文对象集合包含目标局部变量的情况下,即导出函数直接引用目标局部变量,进而根据该导出函数,确定目标局部变量的索引信息,索引信息包括引用目标局部变量的函数标识和在函数中的引用序号。
步骤205,基于索引信息,在进程内存中对目标局部变量的值进行修改。
在确定目标局部变量的索引信息后,可以获取待修改的目标值,直接在进程内存中根据索引信息找到目标局部变量,然后将目标局部变量的值修改为目标值,无需修改代码文本。
具体的,在Lua语言中,提供了debug.setupvalue函数来实现修改上文对象的值,debug.setupvalue(Func,Index,NewValue)的作用就是将函数Func中索引Index所对应的upvalue的值修改为目标值NewValue。
如对于上文中代码文本,目标局部变量Factor为局部函数Inc引用的第1个上文对象,其索引信息可以为函数标识Inc和引用序号6,要将目标局部变量Factor的值修改为6,则可以调用debug.setupvalue(Inc,1,6),进而可以将内存中目标局部变量Factor的值改为6。
在本发明实施例中,通过在开发测试的过程中,确定代码模块中全部的导出函数,针对每个导出函数,确定其引用的上文对象集合,若导出函数引用的上文对象集合不包含目标局部变量,重复执行针对当前获得的上文对象集合中每个局部函数,确定其引用的上文对象集合,直至在当前获得的上文对象集合包含目标局部变量,并根据引用目标局部变量的局部函数,确定目标局部变量的索引信息,若导出函数引用的上文对象集合包含目标局部变量,根据引用目标局部变量的导出函数,确定目标局部变量的索引信息,基于索引信息,在进程内存中对目标局部变量的值进行修改,实现了通过获取上文对象集合来获取局部变量的索引信息,进而基于索引信息直接在进程内存修改代码模块中局部变量的值。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明一实施例提供的一种基于代码模块中局部变量的处理装置的结构示意图,具体可以包括如下模块:
索引信息确定模块301,可以用于在开发测试的过程中,确定代码模块中目标局部变量的索引信息。
进程内存中修改模块302,可以用于基于索引信息,在进程内存中对目标局部变量的值进行修改。
在本发明一实施例中,索引信息确定模块301,可以包括:
导出函数确定子模块,可以用于在开发测试的过程中,确定代码模块中全部的导出函数。
基于导出函数确定索引子模块,可以用于基于导出函数,确定目标局部变量的索引信息。
在本发明一实施例中,基于导出函数确定索引子模块,可以包括:
上文对象集合确定单元,可以用于针对每个导出函数,确定其引用的上文对象集合;其中,上文对象集合包含代码模块中在当前函数外部定义的局部变量和局部函数。
基于上文对象集合确定索引单元,可以用于基于导出函数引用的上文对象集合,确定目标局部变量的索引信息。
在本发明一实施例中,基于上文对象集合确定索引单元,可以包括:
重复确定上文对象集合子单元,可以用于若导出函数引用的上文对象集合不包含目标局部变量,重复执行针对当前获得的上文对象集合中每个局部函数,确定其引用的上文对象集合,直至在当前获得的上文对象集合包含目标局部变量。
根据局部函数确定索引子单元,可以用于根据引用目标局部变量的局部函数,确定目标局部变量的索引信息。
在本发明一实施例中,基于上文对象集合确定索引单元,可以包括:
根据导出函数确定索引子单元,可以用于若导出函数引用的上文对象集合包含目标局部变量,根据引用目标局部变量的导出函数,确定目标局部变量的索引信息。
在本发明一实施例中,索引信息可以包括引用目标局部变量的函数标识和在函数中的引用序号。
在本发明一实施例中,还可以包括:
调试模块,可以用于基于修改后的目标局部变量进行调试。
在本发明实施例中,通过在开发测试的过程中,确定代码模块中目标局部变量的索引信息,基于索引信息,在进程内存中对目标局部变量的值进行修改,实现了基于索引信息直接在进程内存修改代码模块中局部变量的值,一方面不需要直接修改代码文本,避免了在直接修改代码文本后忘记还原导致误提交至版本库,且不需要重启进程,提升了测试效率,另一方面,无需在将局部变量更改为全局变量后再进行修改,符合程序设计原则。
本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上基于代码模块中局部变量的处理方法。
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上基于代码模块中局部变量的处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种基于代码模块中局部变量的处理方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于代码模块中局部变量的处理方法,其特征在于,包括:
在开发测试的过程中,确定代码模块中目标局部变量的索引信息;
基于所述索引信息,在进程内存中对所述目标局部变量的值进行修改。
2.根据权利要求1所述的方法,其特征在于,所述在开发测试的过程中,确定代码模块中目标局部变量的索引信息,包括:
在开发测试的过程中,确定代码模块中全部的导出函数;
基于所述导出函数,确定所述目标局部变量的索引信息。
3.根据权利要求2所述的方法,其特征在于,所述基于所述导出函数,确定所述目标局部变量的索引信息,包括:
针对每个导出函数,确定其引用的上文对象集合;其中,所述上文对象集合包含所述代码模块中在当前函数外部定义的局部变量和局部函数;
基于所述导出函数引用的上文对象集合,确定所述目标局部变量的索引信息。
4.根据权利要求3所述的方法,其特征在于,所述基于所述导出函数引用的上文对象集合,确定所述目标局部变量的索引信息,包括:
若所述导出函数引用的上文对象集合不包含所述目标局部变量,重复执行针对当前获得的上文对象集合中每个局部函数,确定其引用的上文对象集合,直至在当前获得的上文对象集合包含所述目标局部变量;
根据引用所述目标局部变量的局部函数,确定所述目标局部变量的索引信息。
5.根据权利要求3所述的方法,其特征在于,所述基于所述导出函数引用的上文对象集合,确定所述目标局部变量的索引信息,包括:
若所述导出函数引用的上文对象集合包含所述目标局部变量,根据引用所述目标局部变量的导出函数,确定所述目标局部变量的索引信息。
6.根据权利要求1所述的方法,其特征在于,所述索引信息包括引用所述目标局部变量的函数标识和在所述函数中的引用序号。
7.根据权利要求1-6任一项所述的方法,其特征在于,还包括:
基于修改后的目标局部变量进行调试。
8.一种基于代码模块中局部变量的处理装置,其特征在于,包括:
索引信息确定模块,用于在开发测试的过程中,确定代码模块中目标局部变量的索引信息;
进程内存中修改模块,用于基于所述索引信息,在进程内存中对所述目标局部变量的值进行修改。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的基于代码模块中局部变量的处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于代码模块中局部变量的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211376061.9A CN115878455A (zh) | 2022-11-04 | 2022-11-04 | 一种基于代码模块中局部变量的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211376061.9A CN115878455A (zh) | 2022-11-04 | 2022-11-04 | 一种基于代码模块中局部变量的处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878455A true CN115878455A (zh) | 2023-03-31 |
Family
ID=85759425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211376061.9A Pending CN115878455A (zh) | 2022-11-04 | 2022-11-04 | 一种基于代码模块中局部变量的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878455A (zh) |
-
2022
- 2022-11-04 CN CN202211376061.9A patent/CN115878455A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109358882B (zh) | 一种电视终端进行固件升级的方法及装置 | |
CN108319858B (zh) | 针对不安全函数的数据依赖图构建方法及装置 | |
CN105988930A (zh) | 测试用例生成方法和装置 | |
CN110599341A (zh) | 交易调用方法及系统 | |
CN112487083A (zh) | 一种数据校验方法和设备 | |
CN112035341A (zh) | 一种自动化测试方法及装置 | |
CN106156626A (zh) | 一种系统安全升级的方法和装置 | |
CN108241543B (zh) | 业务操作断点执行的方法、业务服务器及系统 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN111913742A (zh) | 一种程序处理方法及相关设备 | |
CN115878455A (zh) | 一种基于代码模块中局部变量的处理方法和装置 | |
CN110673899B (zh) | 一种程序处理方法及相关设备 | |
CN110765008A (zh) | 一种数据处理方法及装置 | |
CN110471828B (zh) | 一种操作系统测试方法、装置及其设备 | |
CN108664250B (zh) | 一种代码处理方法及装置 | |
CN109582396B (zh) | 一种任务状态处理方法、装置、系统及存储介质 | |
CN107291439B (zh) | 一种目标增量数据构建方法及装置 | |
US20150220425A1 (en) | Test context generation | |
CN114168389A (zh) | Cad文件的恢复方法、装置、存储介质及处理器 | |
CN112473145A (zh) | 一种基于游戏引擎的数据处理方法和装置 | |
CN112543104A (zh) | 应用程序打包方法、装置、电子设备及存储介质 | |
CN111427620A (zh) | 嵌入式系统的启动方法及装置 | |
CN114138588B (zh) | 一种控制器的调试信息导出方法、系统、设备以及介质 | |
CN111125165A (zh) | 集合的合并方法、装置、处理器及机器可读存储介质 | |
US8359456B2 (en) | Generating random addresses for verification of distributed computerized devices |
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 |