CN112181834B - 基于gdb调试lua的方法、装置、设备及存储介质 - Google Patents
基于gdb调试lua的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112181834B CN112181834B CN202011050042.8A CN202011050042A CN112181834B CN 112181834 B CN112181834 B CN 112181834B CN 202011050042 A CN202011050042 A CN 202011050042A CN 112181834 B CN112181834 B CN 112181834B
- Authority
- CN
- China
- Prior art keywords
- lua
- printing
- gdb
- jit
- current
- 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
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)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于gdb调试lua的方法,包括以下步骤:打印lua堆栈,获取函数参数;打印当前jit过的代码与源码的对应关系;打印当前luajit消耗的总内存。本发明所提供的技术方案,通过打印lua堆栈,获取函数参数;打印当前jit过的代码与源码的对应关系;打印当前luajit消耗的总内存等这样的方式,来建立一个基于gdb的调试lua的方法,有效克服了gdb只能看到虚拟机层面的东西,看不到实际的代码逻辑的技术问题,运用本申请的方法,可以得到源码,方便开发人员快速地从崩溃的文件中查看用lua编辑的这些逻辑里面最终是在哪里出现问题,进而可以快速有效地进行复盘。
Description
技术领域
本申请涉及计算机互联网技术领域,尤其涉及一种基于gdb调试lua的方法、装置、设备及存储介质。
背景技术
Gdb是一个调试工具,其读取的也是虚拟机的C语言层面的东西,不能看到实际的代码逻辑。在本领域中,网络游戏(网游)是众所周知的,网络游戏可以分为客户端游戏、页面游戏以及手机客户端游戏(即手游),在网络游戏的开发过程中,有些游戏引擎的主要逻辑是用lua进行程序编写,由于lua本身是寄生在C++引擎上的,当程序发生崩溃的时候也只能看到C++层面的逻辑,如何从崩溃的文件中查看用lua编辑的这些逻辑里面最终是在哪里出现问题了,目前没有一个较好的方法去实现。
发明内容
本发明的目的是要提供一种基于gdb调试lua的方法、装置、设备及存储介质,可以解决上述现有问题中的一个或多个。
根据本发明的一个方面,提供一种基于gdb调试lua的方法,包括以下步骤:
打印lua堆栈,获取函数参数;
打印当前jit过的代码与源码的对应关系;
打印当前luajit消耗的总内存。
在某些实施方式中,打印堆栈,获取函数参数,包括以下步骤:
从gdb获取lua-state;获取起始frame和结束frame,从起始frame开始遍历;判断是否到了结束frame,若是,则结束。
在某些实施方式中,判断是否到了结束frame,若否,则获取lua函数原型;根据指令寄存器获取执行到的行数;打印出信息。
在某些方式中,打印当前jit过的代码与源码的对应关系,包括以下步骤:从gdb获取lua-state;获取jit代码块数组,遍历数组;判断是否遍历完jit代码块数组,若是,则结束。
在某些方式中,判断是否遍历完jit代码块数组,若否,则打印jit块的起始地址、结束地址以及函数原型信息。
在某些实施方式中,所述打印当前luajit消耗的总内存,包括以下步骤:从gdb获取lua-state;获取当前的总内存消耗并打印;结束。
根据本申请的另一个方面,提供一种基于gdb调试lua的装置,包括,
第一打印模块,用于打印lua堆栈;
第二打印模块,用于打印当前jit过的代码与源码对应关系;
第三打印模块,用于打印当前luajit消耗的总内存。
在某些实施方式中,第一打印模块,包括第一判断单元,所述第一判断单元用于判断是否到了结束frame。
在某些实施方式中,第二打印模块,包括第二判断单元,所述第二判断单元用于判断是否遍历完jit代码块数组。
根据本申请的另一个方面,提供一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序或指令集由所述处理器加载并执行以实现如前述述的基于gdb调试lua的方法。
根据本申请的另一个方面,一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一端程序、代码集或指令集,所述至少一条指令、所述至少一端程序、所述代码集或指令集由处理器加载并执行以实现如前所述的基于gdb调试lua的方法。
本发明的有益效果为:
本发明所提供的技术方案,通过打印lua堆栈,获取函数参数;打印当前jit过的代码与源码的对应关系;打印当前luajit消耗的总内存等这样的方式,来建立一个基于gdb的调试lua的方法,有效克服了gdb只能看到虚拟机层面的东西,看不到实际的代码逻辑的技术问题,运用本申请的方法,可以得到源码,方便开发人员快速地从崩溃的文件中查看用lua编辑的这些逻辑里面最终是在哪里出现问题,进而可以快速有效地进行复盘。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施方式的基于gdb调试lua的方法流程图。
图2是本发明一实施方式的基于gdb调试lua方法流程图。
图3是本发明一实施方式的基于gdb调试lua方法流程图。
图4是本发明一实施方式的基于gdb调试lua方法流程图。
图5是本发明一实施方式的基于gdb调试lua方法流程图。
图6是本发明一实施方式的打印总内存的方法流程图。
图7是本发明一实施方式的调试装置的结构框图。
图8是本发明一实施方式的判断单元的结构框图。
图9是本发明一实施方式的判断单元的结构框图。
图10是本发明的执行调试方法的设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,提供一种基于gdb调试lua的方法,包括以下步骤:
S1:打印lua堆栈,获取函数参数;
S2:打印当前jit过的代码与源码的对应关系;
S3:打印当前luajit消耗的总内存。
其中,以上S1-S3步骤,均需要从gdb获取lua-state,而gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state则会从栈回溯上看到。通过打印lua堆栈,获取函数参数;打印当前jit过的代码与源码的对应关系;打印当前luajit消耗的总内存等这样的方式,来建立一个基于gdb的调试lua的方法,有效克服了gdb只能看到虚拟机层面的东西,看不到实际的代码逻辑的技术问题,运用本申请的方法,可以得到源码,方便开发人员快速地从崩溃的文件中查看用lua编辑的这些逻辑里面最终是在哪里出现问题,进而可以快速有效地进行复盘。
实施例2
如图2所示,打印堆栈,获取函数参数,包括以下步骤:
S101:从gdb获取lua-state。
具体而言,gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
S102:获取起始frame和结束frame,从起始frame开始遍历。
具体而言,获取到lua state后,可以根据其内存布局,写成访问表达式,就可以访问到起始frame和结束frame。其中内存布局,可以根据源码获取。如,lua会把函数的调用关系存储在lua_State的CallInfo数组里,起始frame就是lua_State的成员ci,结束frame就是lua_State的成员base_ci。
S103:判断是否到了结束frame,具体是跟lua_State的成员base_ci比较。若是,则S104:结束。
实施例3
如图3所示,打印lua堆栈,具体包括:
S11:从gdb获取lua-state。
具体而言,gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
S12:获取起始frame和结束frame,从起始frame开始遍历。
具体而言,获取到lua state后,可以根据其内存布局,写成访问表达式,就可以访问到起始frame和结束frame。其中内存布局,可以根据源码获取。如,lua会把函数的调用关系存储在lua_State的CallInfo数组里,起始frame就是lua_State的成员ci,结束frame就是lua_State的成员base_ci。
S13:判断是否到了结束frame。具体是跟lua_State的成员base_ci比较。
S14:若否,则获取lua函数原型。
具体而言,获取到frame后,可以根据其内存布局,写成访问表达式,获取到函数原型内存布局,可以根据源码获取。也就是说,当判断结果为否的时候,访问当前的CallInfo的成员func,获取到当前的函数原型,获取到当前函数的定义信息(源文件,定义起始行,定义结束行),注意这边的描述都是针对lua函数,c函数只简略打印当前是c函数.
S15:根据指令寄存器获取执行到的行数。具体是,获取到当前的pc(访问CallInfo的savedpc或者lua_State的ci),通过pc,访问函数原型,定位到当前执行的行数。
S16:打印出信息。
堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。对这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在栈顶进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。
通过查看源码,可以看到虚拟机本身的lua的那些对象是怎么进行压栈,如何进去的,参照lua虚拟机里面怎么把lua代码压进去,怎么去组织这种方式,复盘时,出问题的时候,对这个lua虚拟机源码理解后,打印出信息,此时便是需要想要得到的:此时执行哪个函数,在哪一行,上一层调用的是谁,进而容易且精准地得出究竟是哪里出现问题的结论,进而将问题精准解决。
实施例4
如图4所示,打印当前jit过的代码与源码的对应关系,包括以下步骤:
S21:从gdb获取lua-state。
具体是:gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
S22:获取jit代码块数组,遍历数组。
从lua state,根据其内存布局,可以获取到jit过的代码的容器,遍历容器,每个jit过的段会有记录关联源码。从lua state,根据其内存布局,可以获取到jit过的代码的容器。即访问lua_State成员glref获取到global_State,再通过global_State获取到GG_State,再通过GG_State获取到jit_State,由于所有jit过的信息都存储在jit_State里),jit_State的成员trace即是jit代码块数组,遍历这个数组。
S23:判断是否遍历完jit代码块数组,即通过判断当前索引大小和jit代码块数组大小,判断是否遍历完,若否,
S24:则打印jit块的起始地址、结束地址以及函数原型信息。具体是访问jit代码块GCtrace,访问其成员gcptr32,获取函数原型,打印函数相关信息。
实施例5
如图5所示,打印当前jit过的代码与源码的对应关系,包括以下步骤:
S201:从gdb获取lua-state。
具体是:gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
S202:获取jit代码块数组,遍历数组。
从lua state,根据其内存布局,可以获取到jit过的代码的容器,遍历容器,每个jit过的段会有记录关联源码。从lua state,根据其内存布局,可以获取到jit过的代码的容器。即访问lua_State成员glref获取到global_State,再通过global_State获取到GG_State,再通过GG_State获取到jit_State,由于所有jit过的信息都存储在jit_State里),jit_State的成员trace即是jit代码块数组,遍历这个数组。
S203:判断是否遍历完jit代码块数组,即通过判断当前索引大小和jit代码块数组大小,判断是否遍历完,若是,则S204:结束。
实施例6
如图6所示,打印当前luajit消耗的总内存,包括以下步骤:
S31:从gdb获取lua-state。
其中,gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
S32:获取当前的总内存消耗并打印。
其中,从lua state,根据其内存布局,有一个字段专门记录了总内存消耗,写成访问表达式,就可以访问。即访问lua_State成员glref获取到global_State,再通过global_State获取到GCState,GCState的成员total,即是记录了总内存消耗,打印出内存消耗信息。
S33:结束。
实施例7
如图7-图9所示,根据本申请的另一个方面,提供一种基于gdb调试lua的装置100,包括,
第一打印模块110,用于打印lua堆栈。其中,打印堆栈,获取函数参数,包括以下步骤:
从gdb获取lua-state。具体而言,gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
获取起始frame和结束frame,从起始frame开始遍历。具体而言,获取到lua state后,可以根据其内存布局,写成访问表达式,就可以访问到起始frame和结束frame。其中内存布局,可以根据源码获取。如,lua会把函数的调用关系存储在lua_State的CallInfo数组里,起始frame就是lua_State的成员ci,结束frame就是lua_State的成员base_ci。
第一判断单元1101判断是否到了结束frame,即,判断是否到了结束frame,具体是跟lua_State的成员base_ci比较。
若是,则结束。第一判断单元1101的判断结果为否,则获取lua函数原型。具体而言,获取到frame后,可以根据其内存布局,写成访问表达式,获取到函数原型内存布局,可以根据源码获取。也就是说,当判断结果为否的时候,访问当前的CallInfo的成员func,获取到当前的函数原型,获取到当前函数的定义信息(源文件,定义起始行,定义结束行),注意这边的描述都是针对lua函数,c函数只简略打印当前是c函数。
根据指令寄存器获取执行到的行数。具体是,获取到当前的pc(访问CallInfo的savedpc或者lua_State的ci),通过pc,访问函数原型,定位到当前执行的行数。
打印出信息。
第二打印模块120,用于打印当前jit过的代码与源码对应关系。其中,打印当前jit过的代码与源码的对应关系,包括以下步骤:
从gdb获取lua-state。具体是:gdb在打印堆栈时,会把函数堆栈和函数参数列出来,lua state会从栈回溯上看到。
获取jit代码块数组,遍历数组。从lua state,根据其内存布局,可以获取到jit过的代码的容器,遍历容器,每个jit过的段会有记录关联源码。从lua state,根据其内存布局,可以获取到jit过的代码的容器。即访问lua_State成员glref获取到global_State,再通过global_State获取到GG_State,再通过GG_State获取到jit_State,由于所有jit过的信息都存储在jit_State里),jit_State的成员trace即是jit代码块数组,遍历这个数组。
第二判断单元1201判断是否遍历完jit代码块数组,即通过判断当前索引大小和jit代码块数组大小,判断是否遍历完,若是,则结束。第二判断单元1201的判断结果为否,则打印jit块的起始地址、结束地址以及函数原型信息。
第三打印模块130,用于打印当前luajit消耗的总内存。即访问lua_State成员glref获取到global_State,再通过global_State获取到GCState,GCState的成员total,即是记录了总内存消耗,打印出内存消耗信息。
实施例8
如图10所示,根据本申请的另一个方面,提供一种设备,该设备包括:一个或多个处理器310以及存储器320,图10中以一个处理器310为例。执行前面实施例涉及的方法的设备还可以包括:输入装置330和输出装置340。存储器320作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的调试处理的方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的调试处理的方法。
存储器320可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据提示信息推送装置的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器320可选包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至调试装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置330可接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的信号输入。输出装置340可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器320中,当被所述一个或者多个处理器310执行时,执行上述任意方法实施例中的调试处理的方法。
实施例9:
另一方面,本申请提供一种计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行上述方法实施例中的相关步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种基于gdb调试lua的方法,包括以下步骤:
打印lua堆栈:构建GDB的扩展脚本,用来获取、翻译以及打印Lua堆栈;
打印当前jit过的代码与源码的对应关系;
打印当前luajit消耗的总内存;
其中,所述打印lua堆栈包括以下步骤:
从gdb获取lua-state;
获取起始frame和结束frame,从起始frame开始遍历;
判断是否到了结束frame,若是,则结束。
2.根据权利要求1所述的基于gdb调试lua的方法,
判断是否到了结束frame,若否,则获取lua函数原型;
根据指令寄存器获取执行到的行数;
打印出信息。
3.根据权利要求1所述的基于gdb调试lua的方法,
所述打印当前jit过的代码与源码的对应关系,包括以下步骤:
从gdb获取lua-state;
获取jit代码块数组,遍历数组;
判断是否遍历完jit代码块数组,若是,则结束。
4.根据权利要求3所述的基于gdb调试lua的方法,
判断是否遍历完jit代码块数组,若否,则打印jit块的起始地址、结束地址以及函数原型信息。
5.根据权利要求1所述的基于gdb调试lua的方法,
所述打印当前luajit消耗的总内存,包括以下步骤:
从gdb获取lua-state;
获取当前的总内存消耗并打印;
结束。
6.一种用于权利要求1-5任一项所述的基于gdb调试lua的方法的调试装置,包括,
第一打印模块,用于打印lua堆栈;
第二打印模块,用于打印当前jit过的代码与源码对应关系;
第三打印模块,用于打印当前luajit消耗的总内存。
7.根据权利要求6所述的调试装置,
所述第一打印模块,包括第一判断单元,所述第一判断单元用于判断是否到了结束frame;
和/或还包括
所述第二打印模块,包括第二判断单元,所述第二判断单元用于判断是否遍历完jit代码块数组。
8.一种信息处理设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序或指令集由所述处理器加载并执行以实现如权利要求1至5任一所述的基于gdb调试lua的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至5任一所述的基于gdb调试lua的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011050042.8A CN112181834B (zh) | 2020-09-29 | 2020-09-29 | 基于gdb调试lua的方法、装置、设备及存储介质 |
PCT/CN2020/128730 WO2022068001A1 (zh) | 2020-09-29 | 2020-11-13 | 基于gdb调试lua的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011050042.8A CN112181834B (zh) | 2020-09-29 | 2020-09-29 | 基于gdb调试lua的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181834A CN112181834A (zh) | 2021-01-05 |
CN112181834B true CN112181834B (zh) | 2022-02-25 |
Family
ID=73946916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011050042.8A Active CN112181834B (zh) | 2020-09-29 | 2020-09-29 | 基于gdb调试lua的方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112181834B (zh) |
WO (1) | WO2022068001A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223679B1 (en) * | 2014-02-25 | 2015-12-29 | Emc Corporation | Lightweight, non-intrusive, and flexible apparatus to obtain system and process state |
CN108920379A (zh) * | 2018-07-18 | 2018-11-30 | 苏州思必驰信息科技有限公司 | 捕获lua代码异常的方法和装置 |
CN110825386A (zh) * | 2019-11-01 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 代码的编译方法和装置、存储介质 |
CN111382044A (zh) * | 2020-02-29 | 2020-07-07 | 深圳市腾讯信息技术有限公司 | 性能瓶颈的定位方法、定位装置、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130205282A1 (en) * | 2012-02-07 | 2013-08-08 | Microsoft Corporation | Transferring program execution from compiled code to interpreted code |
US9772865B2 (en) * | 2015-02-23 | 2017-09-26 | Futurewei Technologies, Inc. | On-demand loading of dynamic scripting language code for reduced memory usage |
CN106598871A (zh) * | 2016-12-29 | 2017-04-26 | 山东鲁能智能技术有限公司 | Linux下的崩溃文件自动化分析方法及系统 |
CN109783342B (zh) * | 2017-11-10 | 2022-03-29 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
CN110321275A (zh) * | 2018-03-29 | 2019-10-11 | 腾讯科技(上海)有限公司 | 程序监控方法、装置、计算设备以及存储介质 |
CN109445798B (zh) * | 2018-10-17 | 2022-04-22 | 厦门安胜网络科技有限公司 | 一种LuaJIT字节码的处理方法、装置及存储介质 |
CN111061538A (zh) * | 2019-11-14 | 2020-04-24 | 珠海金山网络游戏科技有限公司 | 一种多Lua虚拟机内存优化方法及其系统 |
-
2020
- 2020-09-29 CN CN202011050042.8A patent/CN112181834B/zh active Active
- 2020-11-13 WO PCT/CN2020/128730 patent/WO2022068001A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223679B1 (en) * | 2014-02-25 | 2015-12-29 | Emc Corporation | Lightweight, non-intrusive, and flexible apparatus to obtain system and process state |
CN108920379A (zh) * | 2018-07-18 | 2018-11-30 | 苏州思必驰信息科技有限公司 | 捕获lua代码异常的方法和装置 |
CN110825386A (zh) * | 2019-11-01 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 代码的编译方法和装置、存储介质 |
CN111382044A (zh) * | 2020-02-29 | 2020-07-07 | 深圳市腾讯信息技术有限公司 | 性能瓶颈的定位方法、定位装置、电子设备及存储介质 |
Non-Patent Citations (6)
Title |
---|
GDB调试原理——ptrace系统调用;爱折腾的西山居士;《博客园,https://www.cnblogs.com/xsln/p/ptrace.html》;20160202;全文 * |
lua 源码分析之线程对象lua_State;任智康;《博客园,https://www.cnblogs.com/renyuan/p/6812206.html》;20170505;全文 * |
Lua学习(一):luac、luajit编译与反编译;不知世事;《CSDN,https://blog.csdn.net/feibabeibei_beibei/article/details/90300720》;20190517;第1-6页 * |
Lua源码分析 - 基础篇 - 全局状态机的实现(02);老码农zhuli;《CSDN,https://blog.csdn.net/initphp/article/details/88393885》;20190311;全文 * |
Lua虚拟机的机制分析;王诗伟;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20151215(第12期);全文 * |
Lua调试工具使用及原理;adinosaur;《博客园,https://www.cnblogs.com/adinosaur/p/13289019.html》;20200712;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112181834A (zh) | 2021-01-05 |
WO2022068001A1 (zh) | 2022-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704297B (zh) | 代码评审方法、装置、计算机设备及存储介质 | |
CN110221959B (zh) | 应用程序的测试方法、设备以及计算机可读介质 | |
US20140113257A1 (en) | Automated evaluation of programming code | |
CN114610286A (zh) | 开发文档的生成方法、装置、计算机设备及存储介质 | |
CN107463485B (zh) | 基于方法栈的日志获取方法、装置和终端 | |
CN112181834B (zh) | 基于gdb调试lua的方法、装置、设备及存储介质 | |
CN112052070A (zh) | 应用容器化评估方法、装置、电子设备及存储介质 | |
CN112130838B (zh) | 交易数据处理方法及装置 | |
CN108009083A (zh) | 一种软件功能测试中功能信息获取方法及装置 | |
CN112559377A (zh) | 一种首次测试用例的生成方法和装置 | |
CN110221952B (zh) | 业务数据的处理方法及装置、业务数据处理系统 | |
CN113051262A (zh) | 一种数据质检方法、装置、设备及存储介质 | |
CN112306838A (zh) | 页面布局兼容性测试方法、装置、设备及可读存储介质 | |
CN111414194A (zh) | 一种接口信息生成方法、系统、电子设备及存储介质 | |
CN111104271A (zh) | 一种带内刷新固件过程的稳定性测试方法、装置及设备 | |
CN112181853A (zh) | 程序调试方法、装置及系统 | |
CN116260823B (zh) | 受控数据共享方法、装置、计算机设备和存储介质 | |
CN113064617B (zh) | 一种进行smbios信息更新的方法、系统及存储介质 | |
CN109446091B (zh) | 业务实体对象测试方法及装置 | |
CN112650679B (zh) | 一种测试校验方法、装置及计算机系统 | |
CN115168200A (zh) | 前端测试案例编写方法及装置 | |
US20220244975A1 (en) | Method and system for generating natural language content from recordings of actions performed to execute workflows in an application | |
CN115658532A (zh) | 自动化案例测试方法、自动化案例测试装置以及存储介质 | |
CN110309038B (zh) | 性能测试方法、装置、电子设备及计算机可读存储介质 | |
CN117170680A (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 |