unity搭建xlua和emmy_lua的debug环境
admin
2024-01-21 12:19:46
0

配置步骤

1 环境

1.1 vscode 安装emmy_lua

1.2 安装对应的lua版本

1.3 安装java8并配置环境

1.4 emmy_lua的github上下载emmy_lua的64位版本,解压放到工程目录client\Tools\EmmyLua\

下载地址:https://github.com/EmmyLua/EmmyLuaDebugger/releasesicon-default.png?t=M85Bhttps://github.com/EmmyLua/EmmyLuaDebugger/releases

结构如下

client

——Assets

——Tools\EmmyLua

——EasyHook.dll

——emmy_core.dll

——emmy_hook.dll

2 程序启动时执行下面的代码

local function split(line, sep, maxsplit)if string.len(line) == 0 thenreturn {}endsep = sep or " "maxsplit = maxsplit or 0local retval = {}local pos = 1local step = 0while true dolocal from, to = string.find(line, sep, pos, true)step = step + 1if (maxsplit ~= 0 and step > maxsplit) or not from thenlocal item = string.sub(line, pos)table.insert(retval, item)breakelselocal item = string.sub(line, pos, from - 1)table.insert(retval, item)pos = to + 1endendreturn retval
end--连接EmmyLua
local function connectEmmyLua()local func = function()local assets = CS.UnityEngine.Application.dataPathlocal assetDict = split(assets, "/")local path = ''for i = 1, #assetDict-1 dopath = path .. assetDict[i] .. '/'endpackage.cpath = package.cpath .. ';' .. path .. 'Tools/EmmyLua/emmy_core.dll'local dbg = require('emmy_core')dbg.tcpConnect('localhost', 9966)endlocal handle = function(error)print('IDE没有开启调试', error)endxpcall(func, handle)
end

3 配置debug使用的launch.json

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "emmylua_new","request": "launch","name": "EmmyLua New Debug","host": "localhost","port": 9966,"ext": [".lua",".lua.txt",".lua.bytes",".txt"],"ideConnectDebugger": false},]
}

4 如果是xlua,修改自定义的LuaLoader

这里有个坑,比如lua中require("game.xxx.XX")

在自定义loader中,public byte[] CustomLoader(ref string luaPath)

luaPath则为game.xxx.XX

如果不对这个luaPath做什么,emmylua的断点无法生效,也不会报错,就什么也不发生,简单查阅emmylua插件的源码,没找到关联到lua源码的代码

后来使用breakHere方法,强制进到一个lua断点,但是报错"无法加载源",看不到源码。

local dbg = require('emmy_core')
dbg.tcpConnect('localhost', 8866)
dbg.breakHere()

我猜是不是xlua那边传给emmylua的路径不对呢?

如果想让emmylua断点后可以找到文件需要重新赋值这个luaPath为真实的文件路径

luaPath = GetRealPath(luaPath)

解决问题

5 vscode启动debug

6 设置断点后运行游戏

参考资料

VSCode使用EmmyLua调试Lua代码_HKW_hankangwen的博客-CSDN博客_emmylua vscode

相关内容

热门资讯

酒庄头条:在郎酒庄园,看见世界... 文/酒庄头条 中国酒业该向何处去?又如何走向国际市场?酿酒业是有根产业历史经典产业,郎酒以全球视野开...
100个选基指标|利润总额,真... 推荐阅读: 100个选基指标丨自然年度收益率,最简单,也最重要(第一期) 100个选基指标丨区间收益...
连云港开发区为AI“制药”按下... 从人才赋能、校地协同到产业落地,今年以来,连云港开发区通过一系列密集举措构建起全链条、立体化的产业赋...
1.08亿控股德维嘉:无锡振华... 一家传统汽车冲压件上市公司,正试图用一笔亿元级别的现金收购,为自己贴上“汽车智能化”的标签。 6月2...
ATFX:SpaceX下跌16... 来源:市场资讯 6月23日,ATFX汇评:美国航空航天代表性个股SpaceX,上市六个交易日,三个交...
嘉实基金李涛:长期视角决策未来... 嘉实成长共赢混合基金经理李涛表示, 投资理财本质上是一场长期主义的远行,权益投资本质是追求赚取产业与...
震裕科技可转债发行申请获深交所... 雷达财经 文|苏静 编|深海 6月23日, 震裕科技(300953)发布关于公司向不特定对象发行可转...
深深房A:控股股东深投控拟减持... 6月23日, 深深房A(000029.SZ)公告称,公司收到控股股东深圳市投资控股有限公司(深投控)...
245亿!深市史上最大IPO 2026年6月22日,华润电力旗下的华润新能源(001248.SZ)正式启动申购,发行价10.11元...
五天狂增5800亿港元市值,智... 作者/李海 出品/科技实话 6月22日港股收盘,智谱(2513.HK)走出一波震撼全场的行情,股价稳...
成立不到90天的超级创企昆仑行... 资本疯狂抢筹,90天击穿行业最快独角兽天花板。 成立不到3个月的昆仑行机器人,上演了一出让整个投资圈...
二奢跨境峰会首度入蓉,西南商家... “国内流量越来越贵,海外市场怎么打?”6月23日,全球电商巨头eBay将二手奢侈品跨境发展峰会首度落...
索尼集团时隔30年拟再发美元债... 全球娱乐与科技巨头索尼(Sony)集团计划近三十年来首次发行美元债券。 6月23日,据报道,知情人士...
分红259亿!董事长:未来三年... 本文自南都·湾财社。 采写 | 南都·湾财社记者 孔学劭 6月23日,美的集团正式发布2025年度A...
考验山姆的时候到了 来源 | 伯虎财经(bohuFN) 作者 | 路费 山姆最近有点烦。 原本靠着选品和体验圈定中产的路...
原创 又... 隔夜,现货黄金收盘大涨35.68美元,涨幅0.86%,报4191.44美元,金价上周五曾触及6月11...
三天蒸发超6300亿美元!Sp... 6月23日, SpaceX(SPCX.US)盘前延续跌势,一度下跌近5%至147美元左右,已低于15...
走出“先跑通再治理”误区,耐优... “先把流程跑起来,管理等上了规模再慢慢补课。”这种务实的生存哲学,帮无数成长型企业熬过了最艰难的起步...
IPO问询|优邦科技二度闯关遇... 近日,东莞优邦材料科技股份有限公司(以下简称“优邦科技”)披露深交所第二轮IPO审核问询回复文件。本...