CN114996128A - 基于asm框架的脚本处理方法、装置、设备及存储介质 - Google Patents

基于asm框架的脚本处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114996128A
CN114996128A CN202210557612.5A CN202210557612A CN114996128A CN 114996128 A CN114996128 A CN 114996128A CN 202210557612 A CN202210557612 A CN 202210557612A CN 114996128 A CN114996128 A CN 114996128A
Authority
CN
China
Prior art keywords
expression
script
execution
state information
byte code
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.)
Granted
Application number
CN202210557612.5A
Other languages
English (en)
Other versions
CN114996128B (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.)
Qingju Technology Co ltd
Original Assignee
Qingju Technology 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 Qingju Technology Co ltd filed Critical Qingju Technology Co ltd
Priority to CN202210557612.5A priority Critical patent/CN114996128B/zh
Publication of CN114996128A publication Critical patent/CN114996128A/zh
Application granted granted Critical
Publication of CN114996128B publication Critical patent/CN114996128B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及一种基于ASM框架的脚本处理方法、装置、设备及存储介质,其中,方法包括:对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及执行所述至少一个表达式,返回所述至少一个表达式的执行结果。根据本公开的技术方案,能够打印脚本的执行状态,为脚本执行过程提供了调试跟踪手段。

Description

基于ASM框架的脚本处理方法、装置、设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种基于ASM框架的脚本处理方法、装置、设备及存储介质。
背景技术
目前,对于在JVM上运行的表达式脚本系统,该表达式脚本系统通过编译和执行两个步骤,返回计算结果。
对于使用该表达式脚本系统的外部系统而言,脚本的编译和执行过程是黑盒子,目前没有相应的调试跟踪手段,因此无法得知脚本的执行状态。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于ASM框架的脚本处理方法、装置、设备及存储介质。
第一方面,本公开实施例提供了一种基于ASM框架的脚本处理方法,包括:
对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用表达式的执行方法。
可选地,所述打印所述表达式脚本的执行状态信息,包括:
获取预设的配置信息,打印与所述配置信息对应的所述表达式脚本的执行状态信息;或者,
在未检测到所述配置信息的情况下,采用默认配置打印所有所述表达式脚本的执行状态信息。
可选地,所述执行状态信息包括对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。
可选地,所述方法还包括:通过ASM框架实现类加载器ClassLoader,以及生成ClassVisitor和MethodVisitor;
其中,ClassLoader用于根据类名和字节码加载类;ClassVisitor用于实现修改表达式子类的功能,ClassVisitor包括visit方法、visitField方法和visitMethod方法;MethodVisitor用于实现修改表达式子类的执行方法的功能,MethodVisitor包括visitCode方法。
可选地,在所述基于预先插入的字节码调用拦截器类的beforeMethod方法之前,还包括:
基于visitCode方法插入所述字节码,其中,所述字节码用于调用拦截器类的beforeMethod方法。
可选地,所述列表包括AST节点链表,其中,每个AST节点代表AST语法树的一个节点。
第二方面,本公开实施例提供了一种基于ASM框架的脚本处理装置,包括:
编译模块,用于对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
打印模块,用于基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
执行模块,用于执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用所述表达式的执行方法。
第三方面,本公开实施例提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述第一方面所述的基于ASM框架的脚本处理方法。
第四方面,本公开实施例提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的基于ASM框架的脚本处理方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:对表达式脚本进行编译,生成包括至少一个表达式的列表,基于预先插入的字节码调用拦截器类的beforeMethod方法,打印表达式脚本的执行状态信息,以及执行至少一个表达式,返回至少一个表达式的执行结果,由此,能够打印脚本的执行状态,为脚本执行过程提供了调试跟踪手段。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所提供的一种基于ASM框架的脚本处理方法的流程示意图;
图2为本公开实施例所提供的一种基于ASM框架的脚本处理装置的结构示意图;
图3为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开实施例所提供的一种基于ASM框架的脚本处理方法的流程示意图,本公开实施例提供的方法可以由基于ASM框架的脚本处理装置来执行,该装置可以采用软件和/或硬件实现,并可集成在任意具有计算能力的电子设备上,例如智能手机、平板电脑等用户终端。
如图1所示,本公开实施例提供的基于ASM框架的脚本处理方法可包括:
步骤101,对表达式脚本进行编译,生成列表,其中,表达式脚本由至少一条语句组成,列表包括至少一个表达式,每个表达式对应一条语句。
本公开实施例的方法,可以应用于在JVM(Java Virtual Machine,Java虚拟机)上运行的表达式脚本系统,该表达式脚本系统通过编译和执行两个步骤,返回计算结果。具体地,在实际应用过程中,对于使用该表达式脚本系统的外部系统而言,脚本的编译和执行过程是黑盒子,尤其是脚本的执行过程,目前没有相应的调试跟踪手段,因此,本实施例提供了一种采用ASM(一种Java字节码操控框架)无侵入地实现脚本的调试功能,以打印脚本的执行状态的方案。
本实施例中,表达式脚本包括脚本字符串,脚本字符串由一条语句或者多条语句组成。对表达式脚本进行编译处理,在编译成功后返回表达式的列表,其中,每个表达式对应一条语句,具体地,列表包含AST节点链表,每个AST节点代表AST(Abstract SyntaxTree,抽象语法树)语法树的一个节点。
具体地,当脚本执行时,使用表达式的列表以及对象工厂,计算生成返回值。对象工厂中,保存脚本所需要的对象以及执行过程中产生的临时变量。
下面对ASM框架在脚本处理场景的应用进行说明。在本公开实施例中,通过ASM框架实现了一种类加载器ClassLoader,以及扩展ClassVisitor和MethodVisitor。
其中,对于ClassLoader,构造器有ClassWriter和Interceptor两个参数,本实施例中的ClassLoader用于根据类名和字节码加载类,具体地,可以根据类名和字节码的byte[]加载类,由此,继承Expression的所有类均可通过该ClassLoader加载。
通过ClassVisitor实现修改表达式子类的功能,基于ClassVisitor提供了visit方法、visitField方法和visitMethod方法,用于实现表达式脚本系统的扩展,具体地,包括调用writer的visit方法,调用writer的visitField方法并返回,调用writer的visitMethod方法,可选地,若为exec方法,返回一个新的扩展后的MethodVisitor,否则直接返回。
对于MethodVisitor,构造器存在参数MethodVisitor,本实施例中通过MethodVisitor实现修改表达式子类的执行方法的功能,基于MethodVisitor提供了visitCode方法,用于实现表达式脚本系统的扩展。
进一步地,在基于预先插入的字节码调用拦截器类的beforeMethod方法之前,还包括:基于visitCode插入字节码,其中,字节码用于调用拦截器类的beforeMethod方法。具体地,插入调用Interceptor类的doBefore方法的字节码,进而调用super.visitCode()。
步骤102,基于预先插入的字节码调用拦截器类的beforeMethod方法,打印表达式脚本的执行状态信息。
本实施例中,通过封装Interceptor类,实现打印脚本执行状态的功能,通过Interceptor类提供的方法doBefore,可以根据配置信息,打印执行状态信息。作为一种示例,执行状态信息包括对象工厂、行号和表达式的相关信息,例如对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。
在本公开的一个实施例中,打印表达式脚本的执行状态信息,包括:获取预设的配置信息,打印与配置信息对应的表达式脚本的执行状态信息;或者,在未检测到配置信息的情况下,采用默认配置打印所有表达式脚本的执行状态信息。其中,配置信息具体可以是根据实际需要设置的,以用于确定打印的执行状态信息的范围。
步骤103,执行至少一个表达式,返回至少一个表达式的执行结果。
本实施例中,执行脚步的步骤包括打印执行状态信息以及循环执行各表达式的步骤。
其中,通过调试工具类提供静态方法,方便调试脚本,采用以下步骤循环执行各表达式:初始化一个ClassWriter,增加一个ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用表达式的执行方法。其中,ClassWriter是ClassVisitor的一个实现类,ClassReader用于读取解析字节码,根据Java虚拟机规范中定义的方式解析class文件中的内容,在检测到相应字段时调用ClassVisitor中相对应的方法。
根据本公开实施例的技术方案,通过对表达式脚本进行编译,生成包括至少一个表达式的列表,基于预先插入的字节码调用拦截器类的beforeMethod方法,打印表达式脚本的执行状态信息,以及执行至少一个表达式,返回至少一个表达式的执行结果,由此,提供了采用ASM无侵入地实现脚本的调试功能,能够打印脚本的执行状态,为脚本执行过程提供了调试跟踪手段。
图2为本公开实施例所提供的一种基于ASM框架的脚本处理装置的结构示意图,如图2所示,该基于ASM框架的脚本处理装置包括:编译模块21,打印模块22,执行模块23。
其中,编译模块21,用于对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句。
打印模块22,用于基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息。
执行模块23,用于执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用所述表达式的执行方法。
在本公开的一个实施例中,打印模块22具体用于:获取预设的配置信息,打印与所述配置信息对应的所述表达式脚本的执行状态信息;或者,在未检测到所述配置信息的情况下,采用默认配置打印所有所述表达式脚本的执行状态信息。
在本公开的一个实施例中,所述执行状态信息包括对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。
在本公开的一个实施例中,基于ASM框架的脚本处理装置还包括:扩展模块,用于通过ASM框架实现类加载器ClassLoader,以及生成ClassVisitor和MethodVisitor;其中,ClassLoader用于根据类名和字节码加载类;ClassVisitor用于实现修改表达式子类的功能,ClassVisitor包括visit方法、visitField方法和visitMethod方法;MethodVisitor用于实现修改表达式子类的执行方法的功能,MethodVisitor包括visitCode方法。
在本公开的一个实施例中,基于ASM框架的脚本处理装置还包括:字节码插入模块,用于在所述基于预先插入的字节码调用拦截器类的beforeMethod方法之前,基于visitCode插入所述字节码,其中,所述字节码用于调用拦截器类的beforeMethod方法。
在本公开的一个实施例中,所述列表包括AST节点链表,其中,每个AST节点代表AST语法树的一个节点。
本公开实施例所提供的基于ASM框架的脚本处理装置可执行本公开实施例所提供的任意基于ASM框架的脚本处理方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
图3为本公开实施例提供的一种电子设备的结构示意图。如图3所示,电子设备600包括一个或多个处理器601和存储器602。
处理器601可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。
存储器602可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行程序指令,以实现上文的本公开的实施例的方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。此外,该输入装置603还可以包括例如键盘、鼠标等等。该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图3中仅示出了该电子设备600中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意方法。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意方法。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种基于ASM框架的脚本处理方法,其特征在于,包括:
对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用表达式的执行方法。
2.如权利要求1所述的方法,其特征在于,所述打印所述表达式脚本的执行状态信息,包括:
获取预设的配置信息,打印与所述配置信息对应的所述表达式脚本的执行状态信息;或者,
在未检测到所述配置信息的情况下,采用默认配置打印所有所述表达式脚本的执行状态信息。
3.如权利要求1或2所述的方法,其特征在于,所述执行状态信息包括对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。
4.如权利要求3所述的方法,其特征在于,还包括:
通过ASM框架实现类加载器ClassLoader,以及生成ClassVisitor和MethodVisitor;
其中,ClassLoader用于根据类名和字节码加载类;ClassVisitor用于实现修改表达式子类的功能,ClassVisitor包括visit方法、visitField方法和visitMethod方法;MethodVisitor用于实现修改表达式子类的执行方法的功能,MethodVisitor包括visitCode方法。
5.如权利要求4所述的方法,其特征在于,在所述基于预先插入的字节码调用拦截器类的beforeMethod方法之前,还包括:
基于visitCode方法插入所述字节码,其中,所述字节码用于调用拦截器类的beforeMethod方法。
6.如权利要求1所述的方法,其特征在于,所述列表包括AST节点链表,其中,每个AST节点代表AST语法树的一个节点。
7.一种基于ASM框架的脚本处理装置,其特征在于,包括:
编译模块,用于对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
打印模块,用于基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
执行模块,用于执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用所述表达式的执行方法。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-6中任一所述的基于ASM框架的脚本处理方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1-6中任一所述的基于ASM框架的脚本处理方法。
CN202210557612.5A 2022-05-19 2022-05-19 基于asm框架的脚本处理方法、装置、设备及存储介质 Active CN114996128B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210557612.5A CN114996128B (zh) 2022-05-19 2022-05-19 基于asm框架的脚本处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210557612.5A CN114996128B (zh) 2022-05-19 2022-05-19 基于asm框架的脚本处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114996128A true CN114996128A (zh) 2022-09-02
CN114996128B CN114996128B (zh) 2023-03-14

Family

ID=83027843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210557612.5A Active CN114996128B (zh) 2022-05-19 2022-05-19 基于asm框架的脚本处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114996128B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344855A (zh) * 2007-07-13 2009-01-14 上海宇梦通信科技有限公司 一种基于编译的跟踪代码中特定对象的控制方法及装置
CN103077111A (zh) * 2011-10-26 2013-05-01 阿里巴巴集团控股有限公司 一种持续集成失败用例的定位方法及系统
CN103870383A (zh) * 2012-12-11 2014-06-18 航天信息股份有限公司 基于jvm的测试覆盖率统计方法及系统
CN108920179A (zh) * 2017-04-12 2018-11-30 中国移动通信集团福建有限公司 Java反射实现方法、装置和系统
CN109445880A (zh) * 2018-10-23 2019-03-08 数贸科技(北京)有限公司 跨线程调用链上下文的传递方法、装置及电子设备
CN109739582A (zh) * 2018-12-12 2019-05-10 北京字节跳动网络技术有限公司 函数调用方法、装置、电子设备和计算机可读存储介质
CN111460516A (zh) * 2020-06-22 2020-07-28 腾讯科技(深圳)有限公司 基于非侵入式的数据保护方法、装置、终端及存储介质
CN112100054A (zh) * 2020-08-12 2020-12-18 北京大学 一种面向数据管控的程序静态分析方法和系统
CN112115041A (zh) * 2020-08-06 2020-12-22 北京健康之家科技有限公司 应用程序的动态埋点方法、装置、存储介质及计算机设备
CN113986404A (zh) * 2021-10-29 2022-01-28 中国银行股份有限公司 JavaScript脚本执行方法、装置、电子设备及存储介质
CN114416530A (zh) * 2021-12-23 2022-04-29 金蝶医疗软件科技有限公司 字节码修改方法、装置、计算机设备和存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344855A (zh) * 2007-07-13 2009-01-14 上海宇梦通信科技有限公司 一种基于编译的跟踪代码中特定对象的控制方法及装置
CN103077111A (zh) * 2011-10-26 2013-05-01 阿里巴巴集团控股有限公司 一种持续集成失败用例的定位方法及系统
CN103870383A (zh) * 2012-12-11 2014-06-18 航天信息股份有限公司 基于jvm的测试覆盖率统计方法及系统
CN108920179A (zh) * 2017-04-12 2018-11-30 中国移动通信集团福建有限公司 Java反射实现方法、装置和系统
CN109445880A (zh) * 2018-10-23 2019-03-08 数贸科技(北京)有限公司 跨线程调用链上下文的传递方法、装置及电子设备
CN109739582A (zh) * 2018-12-12 2019-05-10 北京字节跳动网络技术有限公司 函数调用方法、装置、电子设备和计算机可读存储介质
CN111460516A (zh) * 2020-06-22 2020-07-28 腾讯科技(深圳)有限公司 基于非侵入式的数据保护方法、装置、终端及存储介质
CN112115041A (zh) * 2020-08-06 2020-12-22 北京健康之家科技有限公司 应用程序的动态埋点方法、装置、存储介质及计算机设备
CN112100054A (zh) * 2020-08-12 2020-12-18 北京大学 一种面向数据管控的程序静态分析方法和系统
CN113986404A (zh) * 2021-10-29 2022-01-28 中国银行股份有限公司 JavaScript脚本执行方法、装置、电子设备及存储介质
CN114416530A (zh) * 2021-12-23 2022-04-29 金蝶医疗软件科技有限公司 字节码修改方法、装置、计算机设备和存储介质

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
K0BIN: "JAVA通过ASM字节码为成员方法前后添加其他代码", 《HTTPS://BLOG.CSDN.NET/WJY160925/ARTICLE/DETAILS/85332998》 *
N. TRAN等: "Design and implementation of assertions for the common language infrastructure" *
严忠林: "使用代码动态生成技术提升Java程序灵活性", 《计算机时代》 *
程旭 等: "性能监控框架Jwebap的研究与改进" *
程龙等: "应用ASM修改JAVA字节码", 《信息与电脑(理论版)》 *
蔡纬政: "自动化单元测试录制框架的研究与实现" *

Also Published As

Publication number Publication date
CN114996128B (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
US9891900B2 (en) Generation of specialized methods based on generic methods and type parameterizations
CN107041158B (zh) 用于模块化反射的限制性访问控制
US8141035B2 (en) Method for accessing internal states of objects in object oriented programming
CN107526625B (zh) 一种基于字节码检查的Java智能合约安全检测方法
US10331425B2 (en) Automated source code adaption to inject features between platform versions
CN107924326B (zh) 对经更新的类型的迁移方法进行覆盖
US8132152B2 (en) Extending a scripting language to provide an object hierarchy
US8413128B2 (en) Asynchronous load of source dependencies
US20160232017A1 (en) System and Method for Reloading Constructors
US20030191864A1 (en) Method and system for detecting deprecated elements during runtime
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
US20160246622A1 (en) Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages
US10296313B2 (en) Safely consuming dynamically-typed code from a statically-typed programming language
US20220300264A1 (en) Implementing optional specialization when compiling code
US20080301636A1 (en) Per-instance and per-class aspects
CN111625225A (zh) 一种程序指定数据输出方法和装置
CA2428558C (en) System and method for defining and using subclasses declaratively within markup
US7873951B1 (en) Automated object delegation
CN111399842B (zh) 一种代码编译方法及装置
CN114996128B (zh) 基于asm框架的脚本处理方法、装置、设备及存储介质
CN110275710B (zh) 一种Java本地接口一致性检查方法及系统、存储介质及终端
US7526752B1 (en) Introspection support for generic types
EP3033674B1 (en) Runtime memory throttling
CN113986404A (zh) JavaScript脚本执行方法、装置、电子设备及存储介质
Eichberg BAT2XML: XML-based java bytecode representation

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