Cocos2d 調試

準備工作

調試代碼下載

調試示例下載

生成調試配置

這里很多同學出現過一個問題,就是同時下載了很多的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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,924評論 18 139
  • 指令集 lua_capture_error_log lua_use_default_type lua_malloc...
    吃瓜的東閱讀 12,098評論 0 2
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,954評論 6 342
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,224評論 2 33
  • 第一天玩簡書,沒有傲嬌、沒有感嘆。 看一大堆理論再解決問題,還不如就問題解決問題,實實在在。問題解決完了,再去結合...
    風語飛翔閱讀 149評論 0 0