LuaIde

LuaIde使用文档


Cocos 调试

<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> 步骤:</p> <ol> <li>如果你没有生成过调试配置 那么先生成 <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/62.png" alt="演示" /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/63.png" alt="演示" /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/64.png" alt="演示" /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/65.png" alt="演示" /></li> <li>如果你已经有调试配置了可修改/删除工作目录下的<code>.vscode/launch.json</code></li> <li>根据调试需要选择本地或者远程调试即可</li> </ol> <hr /> <h1>参数说明</h1> <h2>launch 本地调试</h2> <p>${workspaceRoot} 为vscode 为打开的文件夹文件夹</p> <h3>mac 运行程序路径确定</h3> <pre><code>找到对应app 如player.app (mac运行程序,请注意不是iphone app) 选择app 右键-&gt;显示包内容-&gt;Contents/MacOs/app名字 如:/Users/k0204/Desktop/vscode/quick-2.2.6/player/mac/player.app/Contents/MacOS/player 将路径填入exePath 中</code></pre> <h3>调试配置</h3> <pre><code>{ "name": "Cocos2-launch", "type": "lua", "request": "launch", "runtimeType": "Cocos2", "localRoot": "${workspaceRoot}", "commandLine": "-workdir ${workspaceRoot} -file src/main.lua", "port": 7003, "isFoxGloryProject":false, "exePath": "E:\\editor\\quick-2.2.6\\player\\win\\player.exe", "printType": 1 }</code></pre> <ol> <li><strong>name</strong>:命名调试器选择项名字<br /> <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/66.png" alt="演示" /></li> </ol> <hr /> <p><strong>type</strong>: <code>默认配置不需要修改</code> <strong>request</strong>:<code>默认配置不需要修改</code> <strong>runtimeType</strong>:<code>默认配置不需要修改</code> <strong>localRoot</strong>: <code>调试脚本目录,用于调试器查找对应的lua文件</code> <strong>isFoxGloryProject</strong>:<code>网狐荣耀请设置该值为true</code> <strong>commandLine</strong>: <code>删除原有的mainFile 配置 改为直接填写 命令参数</code> <code>如果打开的文件夹为 src/scripts 目录 那么参数应该写为</code> <code>"commandLine": "-workdir ${workspaceRoot}/../ -file src/test1.lua",</code> <a href="https://www.showdoc.cc/web/#/luaide?page_id=713877806710429" title="commandLine 参考">commandLine 参考</a> <strong>port</strong>: `调试端口 和 调试代码中的端口统一即可 无特殊需求 </p> <p><strong>exePath</strong>:`执行的exe文件路径 例如:E:/cocos/player/player.exe</p> <p><strong>printType</strong>: <code>print打印方式</code></p> <ol> <li>控制台和系统输出</li> <li>控制台输出</li> <li>系统输出</li> </ol> <h2>attach 远程调试</h2> <pre><code>{ "name": "COCOS(remote debugging)", "type": "lua", "request": "attach", "runtimeType": "Cocos2", "localRoot": "${workspaceRoot}", "port": 7003, "isFoxGloryProject":false "printType": 1 },</code></pre> <p><strong>name</strong>:<code>命名调试器选择项名字 同上</code> <strong>type</strong>: <code>默认配置不需要修改 **request**:</code>默认配置不需要修改<code> **runtimeType**:</code>默认配置不需要修改<code> **localRoot**:</code>与本地调试不同,远程调试 localRoot 当做scriptMap 一般情况下默认为 ${workspaceRoot} 即可,如果你的代码目录是 ${workspaceRoot} 下载的某个路径 也可明确指定 如 ${workspaceRoot}/scripts<code> **port**:</code>调试端口 和 调试代码中的端口统一即可 无特殊需求<code> **isFoxGloryProject**:</code>网狐荣耀请设置该值为true<code> **printType**:</code>print打印方式 `</p> <ol> <li>控制台和系统输出</li> <li>控制台输出</li> <li>系统输出</li> </ol> <h1>调试代码添加</h1> <p>说明: <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 程序异常监听函数,用于当程序出现异常时调试器定位错误代码 </code></pre> <h2>cocos2.x</h2> <pre><code class="language-lua">local breakSocketHandle,debugXpCall = require("LuaDebug")("localhost",7003) CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(breakSocketHandle ,0.3,false) --如果已经存在 __G__TRACKBACK__ 请将 debugXpCall 直接加入 __G__TRACKBACK__ 即可 --__G__TRACKBACK__ 方法不是必须 debugXpCall是实现的是在lua 脚本调用错误时进行代码错误定位 function __G__TRACKBACK__(errorMessage) debugXpCall(); end local status, msg = xpcall(main, __G__TRACKBACK__)</code></pre> <h2>cocos3.x</h2> <h1>注意:由于cocos3.x 较高版本对全局变量进行了限制 所以 调试代码需要添加在 require &quot;cocos.init&quot; 之前如下图:</h1> <p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/67.png" alt="" /></p> <p>2018_5_13:更新 有些版本由于设置问题不能找到 src 目录 可将 cc.FileUtils.getInstance():addSearchPath(&quot;src/&quot;) 放在调试文件上方 如下图: <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/68.png" alt="image.png" /></p> <pre><code class="language-lua">local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003) cc.Director:getInstance():getScheduler():scheduleScriptFunc(breakSocketHandle, 0.3, false) --如果已经存在 __G__TRACKBACK__ 请将 debugXpCall 直接加入 __G__TRACKBACK__ 即可 --__G__TRACKBACK__ 方法不是必须 debugXpCall是实现的是在lua 脚本调用错误时进行代码错误定位 function __G__TRACKBACK__(errorMessage) debugXpCall(); end local status, msg = xpcall(main, __G__TRACKBACK__)</code></pre>

页面列表

ITEM_HTML