预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN114327776A(43)申请公布日2022.04.12(21)申请号202111655712.3(22)申请日2021.12.30(71)申请人支付宝(杭州)信息技术有限公司地址310000浙江省杭州市西湖区西溪路556号8层B段801-11申请人蚂蚁区块链科技(上海)有限公司(72)发明人周维(74)专利代理机构中国贸促会专利商标事务所有限公司11038代理人於菪珉(51)Int.Cl.G06F9/455(2006.01)G06F8/41(2018.01)权利要求书6页说明书15页附图3页(54)发明名称用于智能合约的调试方法、调试设备和调试系统(57)摘要本说明书实施例提供一种用于智能合约的调试方法、调试设备和调试系统。调试方法包括:获取智能合约的包括调试信息的第一字节码程序文件,或者智能合约的第一字节码程序文件以及包括调试信息的调试信息文件;对第一字节码程序文件进行修改,以产生包含用于调用中断处理函数的第一指令和用于调用堆栈维护函数的第二指令的第二字节码程序文件;对第二字节码程序文件进行编译,以产生机器码程序文件;以及根据断点信息和调试命令,以调试状态来执行机器码程序文件,并结合函数列表信息和映射信息对智能合约进行调试。CN114327776ACN114327776A权利要求书1/6页1.一种用于智能合约的调试方法,包括:虚拟机获取所述智能合约的包括调试信息的第一字节码程序文件,或者所述虚拟机获取所述智能合约的第一字节码程序文件以及包括调试信息的调试信息文件,其中,所述调试信息包括所述智能合约的源码与字节码之间的映射信息以及函数列表信息;在所述虚拟机中对所述第一字节码程序文件进行修改,以产生包含用于调用中断处理函数的第一指令和用于调用堆栈维护函数的第二指令的第二字节码程序文件,并相应地修改所述映射信息,其中,所述中断处理函数用于确定是否在其所在的当前运行位置处中断运行,所述堆栈维护函数用于记录在其所在的当前运行位置处的函数调用状态;在所述虚拟机中对所述第二字节码程序文件进行编译,以产生机器码程序文件;以及根据所述虚拟机获取的断点信息和调试命令,在所述虚拟机中以调试状态来执行所述机器码程序文件,并结合所述函数列表信息和所述映射信息对所述智能合约进行调试。2.根据权利要求1所述的调试方法,其中,所述虚拟机为WASM虚拟机,且所述第一字节码程序文件和所述第二字节码程序文件均为WASM文件。3.根据权利要求1所述的调试方法,其中,所述映射信息包括所述智能合约的源码的行号与相应的字节码的行号之间的映射关系。4.根据权利要求1所述的调试方法,其中,所述函数列表信息包括所述智能合约中的函数的名称、函数的词法作用域、变量的名称、变量的数据类型、变量的词法作用域、变量的索引、参数的名称和参数的索引中的至少一者。5.根据权利要求1所述的调试方法,其中,在所述虚拟机中对所述第一字节码程序文件进行修改,以产生包含用于调用中断处理函数的第一指令和用于调用堆栈维护函数的第二指令的第二字节码程序文件包括在所述虚拟机的调试器线程中执行以下操作:将所述第一字节码程序文件划分成一个或多个函数;针对所述一个或多个函数中的每个函数,分别执行以下操作:将函数划分成一个或多个基本块,使得该函数中的每条指令被包括且仅被包括在所述一个或多个基本块中的相应的一个基本块中,其中,每个基本块包括一条或多条指令,且一旦基本块被运行,包含在该基本块中的所有的指令被全部运行;以及在函数中的每个基本块的头部加入所述第一指令。6.根据权利要求5所述的调试方法,其中,将函数划分成一个或多个基本块,使得该函数中的每条指令被包括且仅被包括在所述一个或多个基本块中的相应的一个基本块中包括:查找函数中的所有非线性运行指令;以及根据查找到的非线性运行指令,将函数划分成一个或多个基本块,其中,每个非线性运行指令为其所在的基本块中的最后一条指令。7.根据权利要求6所述的调试方法,其中,所述非线性运行指令包括跳转指令、函数调用指令和修改变量值的存储类指令中的至少一者。8.根据权利要求5所述的调试方法,其中,在所述虚拟机中对所述第一字节码程序文件进行修改,以产生包含用于调用中断处理函数的第一指令和用于调用堆栈维护函数的第二指令的第二字节码程序文件还包括在所述虚拟机的调试器线程中执行以下操作:在所述一个或多个函数中的每个函数的所有入口和出口之前加入所述第二指令。2CN114327776A权利要求书2/6页9.根据权利要求1所述的调试方法,其中,相应地修改所述映射信息包括在所述虚拟机的调试器线程中执行以下操作:将所述映射信息中的所述智能合约的源码与所述第一字节码程序文件的字节码之间的第一映射关系修改为所述智能合约的源码与所述第