VS Code断点调试Cosos Lua(Mac)

1. 安装luaide,在扩展里面搜索luaide(推荐使用最新版本)

2. 生成调试配置

参数说明

name: 命名调试器的名字
type: 配置类型,不需要修改
request: 请求配置类型
runtimeType: 运行时类型,不需要修改支持:Lua51, Cocos2, Cocos3, Unity
localRoot: 调试文件夹目录
manFile: 启动的lua文件名
commandLine: 删除了原有的mainFile配置,可直接填写命令参数,其相关的配置有:
    -workdir 设置项目目录,等同于 player Open Project 对话框中的 Project Directory
    -file 设置启动脚本,等同于 Open Project 对话框中 Script File
    -writable 设置 device.writablePath 对应的路径,未指定时为项目目录
    -package.path 设置附加的 Lua 模块加载路径,格式为 “/mylualib1;/mylualib2;;”,用 “;” 分割多个路径,最后一个 “;” 表示 -workdir 所指目录
    -size 设置模拟器的屏幕尺寸,格式为“宽度x高度”
    -scale 设置模拟器的缩放比例,格式为 “1.0”,“0.5” 等数值
    -write-debug-log 将调试信息写入 debug.log 文件,该文件存放于项目目录中
    -disable-write-debug-log 禁止写入调试信息到 debug.log 文件
    -console 显示调试信息控制台窗口
    -disable-console 禁止调试信息控制台窗口
    -load-framework 载入 QUICK_COCOS2DX_ROOT 环境变量所指 quick-cocos2d-x 目录中的预编译框架文件
    -disable-load-framework 禁止载入预编译框架文件
    -offset 启动时模拟器窗口的偏移位置,格式为 “{X偏移量,Y偏移量}”

port: 调试端口,和调试代码中的端口一致即可。如果有多个VsCode工程,建议端口双方的端口不一致,否则调试无效
exePath: 执行文件路径,注意:
    在widnows中,可填入其exe的完整路径
    在mac中可找到对应的desktop app项目,然后右键->显示包内容->Contents/MacOS/AppName, 可不添加其后缀
print: print打印方式:1 控制台和系统输出 2 控制台输出 3 系统输出

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 程序异常监听函数,用于当程序出现异常时调试器定位错误代码 

cocos2.x

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__)

cocos3.x

注意:由于cocos3.x 较高版本对全局变量进行了限制 所以 调试代码需要添加在 require “cocos.init” 之前

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__)

拷贝调试文件 

原文地址:https://www.cnblogs.com/ring1992/p/15194318.html