Ulua&ToLua 调试
来源:互联网 发布:装修设计效果图软件 编辑:程序博客网 时间:2024/06/11 04:49
准备工作
调试代码下载
生成调试配置
**这里很多同学出现过一个问题,就是同时下载了很多的lua 调试插件,所以这里需要注意 如果使用luaide进行lua调试,
需要先禁用或卸载其他的lua调试插件.**
步骤:
- 如果你没有生成过调试配置 那么先生成
- 如果你已经有调试配置了可修改/删除工作目录下的
.vscode/launch.json
- 根据调试需要选择本地或者远程调试即可
attach 远程调试 Unity 调试都为远程调试 不分平台请注意
{ "name": "Unity-ulua", "type": "lua", "request": "attach", "runtimeType": "Unity", "localRoot": "${workspaceRoot}", "fileExtname": ".lua", "port": 7003, "printType": 1}
1. name:命名调试器选择项名字
1. type: 默认配置不需要修改
2. request:默认配置不需要修改
1. runtimeType:默认配置不需要修改
2. localRoot: 与本地调试不同,远程调试 localRoot 当做scriptMap 一般情况下默认为
3. fileExtname:该选项ulua 用默认值就可,如果项目中lua文件后缀不是.lua可修改为具体的后缀来告诉调试器 例如:”fileExtname”: “.txt”
2. port: 调试端口 和 调试代码中的端口统一即可 无特殊需求
3. printType: print打印方式
1. 控制台和系统输出
2. 控制台输出
3. 系统输出
调试代码添加
说明:
下载对应的LuaDebug 或 LuaDebugjit 后放入脚本目录中
local breakSocketHandle,debugXpCall = require("LuaDebugjit")("192.168.1.102",7003) local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003) 1. IP地址当本机调试时可使用localhost远程调试或移动设备端调试是需要输入调试器所在机器具体的ip 2. port 端口 LuaIde 默认配置中端口为7003 如有需要可执行更改确保调试器配置端口和调用代码的端口统一即可 3. breakSocketHandle luaIde断点及时刷新函数,需要在定时器中调用 该函数确保断点能够及时的发送到lua 客户端 4. debugXpCall 程序异常监听函数,用于当程序出现异常时调试器定位错误代码 ulua 中为找到合适的位置添加 可忽略该方法不影响调试,如果有可统一添加的位置可告知一下
开启LuaSocket
ulua 默认关闭了luaSocket 如果项目没有开启请自行开启
打开 Assets/Manager/LuaManager.cs 并添加如下代码
#region luaide 调试库添加//如果项目中没有luasocket 请打开[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]static int LuaOpen_Socket_Core(IntPtr L){ return LuaDLL.luaopen_socket_core(L);}protected void OpenLuaSocket(){ LuaConst.openLuaSocket = true; lua.BeginPreLoad(); lua.RegFunction("socket.core", LuaOpen_Socket_Core); lua.EndPreLoad();}#endregion
并在OpenLibs 方法中调用 OpenLuaSocket()
/// <summary>/// 初始化加载第三方库/// </summary>void OpenLibs() { lua.OpenLibs(LuaDLL.luaopen_pb); lua.OpenLibs(LuaDLL.luaopen_sproto_core); lua.OpenLibs(LuaDLL.luaopen_protobuf_c); lua.OpenLibs(LuaDLL.luaopen_lpeg); lua.OpenLibs(LuaDLL.luaopen_bit); //luaide socket 开启 lua.OpenLibs(LuaDLL.luaopen_socket_core); this.OpenLuaSocket(); //end luaide this.OpenCJson();}
示例文件:LuaManager.cs
在启动文件中添加调试代码
local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003)local timer = Timer.New(function() breakSocketHandle() end, 1, -1, false)timer:Start();
示例文件:ULUA_Main.lua
高阶用法(查看userdata 的值)
由于采用的是c#语言所以可以利用到反射机制这样可以通过反射获取一些c#类型的值显示在调试器中
下载 LuaDebugTool.cs
将LuaDebugTool.txt 重命名为 LuaDebugTool.cs 后加入到Assets/Scripts/Utility/
目录下打开Editor 项目中的CustomSetting.cs
搜索
public static BindType[] customTypeList
所在位置添加如下代码
_GT(typeof(LuaDebugTool)),
_GT(typeof(LuaValueInfo)),
重新生成warp 这里我采用的是Clear warp files
贴一张c# 变量值的图
- Ulua&ToLua 调试
- Unity ulua/tolua slua调试教程
- VSCode 调试tolua(xlua、slua、ulua通用)
- u3d tolua + ZeroBraneStudio远程调试
- uLua
- ulua
- ulua
- ulua
- tolua++
- tolua
- tolua
- uLua FAQ
- ULUA/CSTOLUA
- uLua实例
- ULua杂记
- ulua经验
- ULua使用方法
- DllNotFoundException: ulua
- 调试视频教程
- Java之文件下载工具类-yellowcong
- Cocos2d 调试
- 如何编写复用性、可读性和可维护性的代码
- 调试代码下载
- Ulua&ToLua 调试
- Handler解析(一):是如何实现线程之间的切换
- Java之请求发送工具类(HttpClientUtils,爬虫)-yellowcong
- 程序从片内地址0开始,但为什么链接地址又设0x30000000,那不就从0x30000000开始了,反汇编可以看到不是从0开始的
- Java之请求发送工具类(HttpRequestUtils,百度站长)-yellowcong
- (es5)JavaScript 知识梳理 (1)
- Java之图片裁剪工具类-yellowcong
- Spring Boot 系列(四)静态资源处理
- WSDL WebService的创建和使用实例