【技术实现步骤摘要】
基于gdb调试lua的方法、装置、设备及存储介质
本申请涉及计算机互联网
,尤其涉及一种基于gdb调试lua的方法、装置、设备及存储介质。
技术介绍
Gdb是一个调试工具,其读取的也是虚拟机的C语言层面的东西,不能看到实际的代码逻辑。在本领域中,网络游戏(网游)是众所周知的,网络游戏可以分为客户端游戏、页面游戏以及手机客户端游戏(即手游),在网络游戏的开发过程中,有些游戏引擎的主要逻辑是用lua进行程序编写,由于lua本身是寄生在C++引擎上的,当程序发生崩溃的时候也只能看到C++层面的逻辑,如何从崩溃的文件中查看用lua编辑的这些逻辑里面最终是在哪里出现问题了,目前没有一个较好的方法去实现。
技术实现思路
本专利技术的目的是要提供一种基于gdb调试lua的方法、装置、设备及存储介质,可以解决上述现有问题中的一个或多个。根据本专利技术的一个方面,提供一种基于gdb调试lua的方法,包括以下步骤:打印lua堆栈,获取函数参数;打印当前jit过的代码与源码的对应关系;打印当前lu ...
【技术保护点】
1.一种基于gdb调试lua的方法,包括以下步骤:/n打印lua堆栈:构建GDB的扩展脚本,用来获取、翻译以及打印Lua堆栈;/n打印当前jit过的代码与源码的对应关系;/n打印当前luajit消耗的总内存。/n
【技术特征摘要】
1.一种基于gdb调试lua的方法,包括以下步骤:
打印lua堆栈:构建GDB的扩展脚本,用来获取、翻译以及打印Lua堆栈;
打印当前jit过的代码与源码的对应关系;
打印当前luajit消耗的总内存。
2.根据权利要求1所述的基于gdb调试lua的方法,
所述打印堆栈,获取函数参数,包括以下步骤:
从gdb获取lua-state;
获取起始frame和结束frame,从起始frame开始遍历;
判断是否到了结束frame,若是,则结束。
3.根据权利要求2所述的基于gdb调试lua的方法,
判断是否到了结束frame,若否,则获取lua函数原型;
根据指令寄存器获取执行到的行数;
打印出信息。
4.根据权利要求1所述的基于gdb调试lua的方法,
所述打印当前jit过的代码与源码的对应关系,包括以下步骤:
从gdb获取lua-state;
获取jit代码块数组,遍历数组;
判断是否遍历完jit代码块数组,若是,则结束。
5.根据权利要求4所述的基于gdb调试lua的方法,
判断是否遍历完jit代码块数组,若否,则打印jit块的起始地址、结束地址以及函数原型信息。
6.根据权利要求1所述的基于gdb调试lua的...
【专利技术属性】
技术研发人员:宋大伟,李拓,陈建华,
申请(专利权)人:苏州亿歌网络科技有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。