cocos4.0调试
<h1>准备工作</h1>
<p>由于4.0版本对命令行做了修改
--file 已经无效
下面给出正确的调试配置
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/121.png" alt="" /></p>
<p>调试案例: <a href="https://pan.baidu.com/s/1KHXYlkGGVJ-siJ22O-ej2g">https://pan.baidu.com/s/1KHXYlkGGVJ-siJ22O-ej2g</a> 提取码:ck76
调试案例中只上传了templates 目录 ,下载整个cocos 引擎项目 下载地址为
链接: <a href="https://pan.baidu.com/s/162CmRTXFOSEChF6D5IJQzQ">https://pan.baidu.com/s/162CmRTXFOSEChF6D5IJQzQ</a> 提取码: 89jt</p>
<h3>下载案例后覆盖templates目录 即可,将templates中的src目录用vscode 打开 其中src/.vscode/lanuch.json 为调试配置.</h3>
<hr />
<p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/122.png" alt="" /></p>
<p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/123.png" alt="" /></p>
<h2>调试代码添加位置为:src/main.lua</h2>
<h1>生成调试配置 调试案例中已经生成了,如果为调试案例可忽略</h1>
<p><strong>这里很多同学出现过一个问题,就是同时下载了很多的lua 调试插件,所以这里需要注意 如果使用luaide进行lua调试,
需要先禁用或卸载其他的lua调试插件.</strong>
步骤:</p>
<ol>
<li>如果你没有生成过调试配置 那么先生成() <img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/124.png" alt="演示" />
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/125.png" alt="演示" />
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/126.png" alt="演示" />
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/127.png" alt="演示" />
如果生成有问题可以试试
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c425463d0e51c2180527addaffa6b31e" 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 右键->显示包内容->Contents/MacOs/app名字 如:/Users/k0204/Desktop/vscode/quick-2.2.6/player/mac/player.app/Contents/MacOS/player
将路径填入exePath 中</code></pre>
<ol>
<li><strong>name</strong>:命名调试器选择项名字<br />
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/128.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": "--gamedir ${workspaceRoot}/../",</code></p>
<h3>commandLine 参考</h3>
<pre><code>### Parameter
* --width (int), Game window width.
* --height (int), Game window height.
* --scale (int), Window scale factor, the value devide by 100 to get the final scale.
* --log, Write log to file.
* --gamedir, Lua Game project fullpath.
* --writedir, writeable path. Default is same with gamedir.</code></pre>
<p><strong>port</strong>: <code>调试端口 和 调试代码中的端口统一即可 无特殊需求 **exePath**:</code>执行的exe文件路径 例如:E:/cocos/player/player.exe
<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> 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>cocos3.x 及cocos4.x</h2>
<h1>注意:由于cocos3.x 较高版本对全局变量进行了限制 所以 调试代码需要添加在 require "cocos.init" 之前如下图:</h1>
<p><img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/129.png" alt="" /></p>
<p>2018_5_13:更新 有些版本由于设置问题不能找到 src 目录 可将 cc.FileUtils.getInstance():addSearchPath("src/") 放在调试文件上方
如下图:
<img src="https://luaide-1253509027.cos.ap-beijing.myqcloud.com/docImg/130.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) </code></pre>