XLua 调试
<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>
<p>===================================</p>
<h1>注意: 如果你使用 luaEvn.DoString 进行脚本脚在 那么在doString 方法的第二个参数需要填入文件名 如下图</h1>
<p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/69.png" alt="image.png" />
如果 第二个参数(chunkName) 带有.txt 试试将.txt去掉后传入</p>
<h1>注意: 如果你使用 luaEvn.AddLoader 进行脚本脚在 那么在doString 方法的第二个参数需要填入文件名 如下图</h1>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/2bddb3e70d54dceeb4e2a24042895d41" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/b4ea8e1c8813bc64d4398dbb0f74f0df" alt="" /></p>
<h1>生成调试配置</h1>
<p><strong>这里很多同学出现过一个问题,就是同时下载了很多的lua 调试插件,所以这里需要注意 如果使用luaide进行lua调试,
需要先禁用或卸载其他的lua调试插件.</strong><br />
步骤: </p>
<ol>
<li>如果你没有生成过调试配置 那么先生成 <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/70.png" alt="演示" />
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/71.png" alt="演示" />
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/72.png" alt="演示" /></li>
</ol>
<p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/73.png" alt="xlUA" />
如果生成有问题可以试试
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c425463d0e51c2180527addaffa6b31e" alt="" /></p>
<ol>
<li>如果你已经有调试配置了可修改/删除工作目录下的<code>.vscode/launch.json</code></li>
<li>根据调试需要选择本地或者远程调试即可</li>
</ol>
<h2>attach 远程调试 Unity 调试都为远程调试 不分平台请注意</h2>
<pre><code> {
"name": "Unity-xlua",
"type": "lua",
"request": "attach",
"runtimeType": "Unity",
"localRoot": "${workspaceRoot}",
"fileExtname": ".txt",
"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>:xlua lua文件默认为 .txt ,如果项目中lua文件后缀不是.lua可修改为具体的后缀来告诉调试器 例如:"fileExtname": ".txt" </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><br />
如果默认lua后缀为.txt 将<br />
LuaDebug.lua 修改为LuaDebug.txt<br />
LuaDebugjit.lua修改为 LuaDebugjit.txt</p>
<pre><code>local breakSocketHandle,debugXpCall = require("LuaDebug")("192.168.1.102",7003) -- ip 适用于 win mac 移动设备
local breakSocketHandle,debugXpCall = require("LuaDebug")("localhost",7003) --本机调试 win mac
1. IP地址当本机调试时可使用localhost远程调试或移动设备端调试是需要输入调试器所在机器具体的ip
2. port 端口 LuaIde 默认配置中端口为7003 如有需要可执行更改确保调试器配置端口和调用
代码的端口统一即可
3. breakSocketHandle luaIde断点及时刷新函数,需要在定时器中调用 该函数确保断点能够及时的
发送到lua 客户端
4. debugXpCall 程序异常监听函数,用于当程序出现异常时调试器定位错误代码 ulua 中为找到合适的位置添加 可忽略该方法不影响调试,如果有可统一添加的位置可告知一下</code></pre>
<h2>在启动文件中添加调试代码</h2>
<pre><code>local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003)
--定时器还未找到,找到后添加</code></pre>
<h2>定时器还未找到,找到后添加,有知道的请告知 qq:3567349380</h2>
<p>示例文件:<a href="https://pan.baidu.com/s/1l4F9rpp4zNUBh81TK0yVhw">xlua_main.txt</a></p>
<h1>高阶用法(查看userdata 的值) 该功能正在调试阶段 会更加不同的框架做处理从而达到理想的效果</h1>
<p>由于采用的是c#语言所以可以利用到反射机制这样可以通过反射获取一些c#类型的值显示在调试器中</p>
<ol>
<li>下载 <a href="http://www.jianshu.com/p/84fac5c7b940">LuaDebugTool.cs </a><br />
将LuaDebugTool.txt 重命名为 LuaDebugTool.cs 后加入到 <code>Assets/XLua/Src</code> 目录下 打开LuaDebugTool 将<code>[LuaCallCSharp]</code> 注释的代码取消注释 并 <code>using XLua;</code> 的注释也去掉 如图:
<img src="http://upload-images.jianshu.io/upload_images/5576301-414e0d8eee60d008.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" /></li>
</ol>