美文网首页
Cocos2d 调试

Cocos2d 调试

作者: LuaIde | 来源:发表于2017-07-05 13:11 被阅读0次

    准备工作

    调试代码下载

    调试示例下载

    生成调试配置

    这里很多同学出现过一个问题,就是同时下载了很多的lua 调试插件,所以这里需要注意 如果使用luaide进行lua调试,
    需要先禁用或卸载其他的lua调试插件.

    步骤:

    1. 如果你没有生成过调试配置 那么先生成 演示
      演示
      演示
      演示
    2. 如果你已经有调试配置了可修改/删除工作目录下的.vscode/launch.json
    3. 根据调试需要选择本地或者远程调试即可

    参数说明

    参数说明:

    launch 本地调试

    {
        "name": "Cocos2-launch",
        "type": "lua",
        "request": "launch",
        "runtimeType": "Cocos2",
        "localRoot": "${workspaceRoot}",
        "commandLine": "-workdir ${workspaceRoot} -file src/main.lua",
        "port": 7003,
        "exePath": "E:\\editor\\quick-2.2.6\\player\\win\\player.exe",
        "printType": 1
    }
    
    1. name:命名调试器选择项名字

      演示
    2. type: 默认配置不需要修改

    3. request:默认配置不需要修改

    4. runtimeType:默认配置不需要修改

    5. localRoot: 调试脚本目录,用于调试器查找对应的lua文件

    6. commandLine: 删除原有的mainFile 配置 改为直接填写 命令参数
      如果打开的文件夹为 src/scripts 目录 那么参数应该写为
      "commandLine": "-workdir ${workspaceRoot}/../ -file src/test1.lua",

    7. port: 调试端口 和 调试代码中的端口统一即可 无特殊需求

    8. exePath:执行的exe文件路径 例如:E:/cocos/player/player.exe

    9. printType: print打印方式

      1. 控制台和系统输出
      2. 控制台输出
      3. 系统输出

    attach 远程调试

    {
        "name": "COCOS(remote debugging)",
        "type": "lua",
        "request": "attach",
        "runtimeType": "Cocos2",
        "localRoot": "${workspaceRoot}",
        "port": 7003,
        "printType": 1
    },
    
    1. name:命名调试器选择项名字 同上
    2. type: 默认配置不需要修改
    3. request:默认配置不需要修改
    4. runtimeType:默认配置不需要修改
    5. localRoot: 与本地调试不同,远程调试 localRoot 当做scriptMap 一般情况下默认为 ${workspaceRoot} 即可,如果你的代码目录是 ${workspaceRoot} 下载的某个路径 也可明确指定 如 ${workspaceRoot}/scripts
    6. port: 调试端口 和 调试代码中的端口统一即可 无特殊需求
    7. printType: print打印方式
      1. 控制台和系统输出
      2. 控制台输出
      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__)
    

    示例文件:cocos2x_main.lua

    cocos3.x

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

    image.png

    2018_5_13:更新 有些版本由于设置问题不能找到 src 目录 可将 cc.FileUtils.getInstance():addSearchPath("src/") 放在调试文件上方
    如下图:


    image.png
    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__)
    

    示例文件:cocos3x_main.lua

    相关文章

      网友评论

          本文标题: Cocos2d 调试

          本文链接:https://www.haomeiwen.com/subject/lbqqhxtx.html