LuaIde

LuaIde使用文档


Ulua | tolua 调试

<h1>准备工作</h1> <p><a href="https://www.showdoc.cc/web/#/luaide?page_id=713624786094812">调试代码下载</a></p> <p>[调试示例下载](<a href="https://pan.baidu.com/s/1ffVsxswxikwVjTZw3nLcfw">https://pan.baidu.com/s/1ffVsxswxikwVjTZw3nLcfw</a> ) 提取码:jgnk</p> <h1>生成调试配置</h1> <p><strong>这里很多同学出现过一个问题,就是同时下载了很多的lua 调试插件,所以这里需要注意 如果使用luaide进行lua调试, 需要先禁用或卸载其他的lua调试插件.</strong><br /> 步骤: </p> <ol> <li> <p>如果你没有生成过调试配置 那么先生成 <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/81.png" alt="演示" /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/82.png" alt="演示" /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/83.png" alt="演示" /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/84.png" alt="Ulua&ToLua" /> 如果生成有问题可以试试 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c425463d0e51c2180527addaffa6b31e" alt="" /></p> </li> <li>如果你已经有调试配置了可修改/删除工作目录下的<code>.vscode/launch.json</code></li> <li>根据调试需要选择本地或者远程调试即可</li> </ol> <h2>attach 远程调试 Unity 调试都为远程调试 不分平台请注意</h2> <pre><code> { "name": "Unity-ulua", "type": "lua", "request": "attach", "runtimeType": "Unity", "localRoot": "${workspaceRoot}", "fileExtname": ".lua", "port": 7003, "printType": 1 }</code></pre> <ol> <li><strong>name</strong>:命名调试器选择项名字</li> <li><strong>type</strong>: 默认配置不需要修改</li> <li><strong>request</strong>:默认配置不需要修改</li> <li><strong>runtimeType</strong>:默认配置不需要修改</li> <li><strong>localRoot</strong>: 与本地调试不同,远程调试 localRoot 当做scriptMap 一般情况下默认为 ${workspaceRoot} 即可,如果你的代码目录是 ${workspaceRoot} 下载的某个路径 也可明确指定 如 ${workspaceRoot}/scripts</li> <li><strong>fileExtname</strong>:该选项ulua 用默认值就可,如果项目中lua文件后缀不是.lua可修改为具体的后缀来告诉调试器 例如:&quot;fileExtname&quot;: &quot;.txt&quot;</li> <li><strong>port</strong>: 调试端口 和 调试代码中的端口统一即可 无特殊需求</li> <li><strong>printType</strong>: print打印方式 <ol> <li>控制台和系统输出</li> <li>控制台输出</li> <li>系统输出</li> </ol></li> </ol> <h1>调试代码添加</h1> <p>说明:<br /> <strong>下载对应的LuaDebug 或 LuaDebugjit 后放入脚本目录中</strong></p> <pre><code>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 中为找到合适的位置添加 可忽略该方法不影响调试,如果有可统一添加的位置可告知一下</code></pre> <h2>开启LuaSocket</h2> <p>ulua 默认关闭了luaSocket 如果项目没有开启请自行开启 </p> <p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/85.png" alt="LuaManager.cs" /> </p> <p><strong>打开 Assets/Manager/LuaManager.cs 并添加如下代码</strong></p> <pre><code>#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</code></pre> <p><strong>并在OpenLibs 方法中调用 OpenLuaSocket()</strong></p> <pre><code>/// &lt;summary&gt; /// 初始化加载第三方库 /// &lt;/summary&gt; 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(); }</code></pre> <p>示例文件:<a href="https://pan.baidu.com/s/1H97tL2y-qBGbkEg2gjtmFA">LuaManager.cs</a></p> <h2>在启动文件中添加调试代码</h2> <pre><code>local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003) local timer = Timer.New(function() breakSocketHandle() end, 1, -1, false) timer:Start();</code></pre> <h1>高阶用法(查看userdata 的值)</h1> <p>由于采用的是c#语言所以可以利用到反射机制这样可以通过反射获取一些c#类型的值显示在调试器中</p> <ol> <li> <p>下载 <a href="http://www.jianshu.com/p/84fac5c7b940">LuaDebugTool.cs </a><br /> 将LuaDebugTool.txt 重命名为 LuaDebugTool.cs 后加入到 <code>Assets/Scripts/Utility/</code> 目录下 <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/86.png" alt="Paste_Image.png" /></p> </li> <li>打开Editor 项目中的CustomSetting.cs<br /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/88.png" alt="Paste_Image.png" /> </li> <li> <p>搜索 <code>public static BindType[] customTypeList</code> 所在位置添加如下代码<br /> _GT(typeof(LuaDebugTool)),<br /> _GT(typeof(LuaValueInfo)),<br /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/89.png" alt="添加代码.png" /> </p> </li> <li> <p>重新生成warp 这里我采用的是Clear warp files<br /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/90.png" alt="Paste_Image.png" /></p> </li> <li>贴一张c# 变量值的图 </li> <li><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/91.png" alt="c#变量" /></li> </ol>

页面列表

ITEM_HTML