码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • unity搭建xlua和emmy_lua的debug环境


    配置步骤

    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 程序启动时执行下面的代码

    1. local function split(line, sep, maxsplit)
    2. if string.len(line) == 0 then
    3. return {}
    4. end
    5. sep = sep or " "
    6. maxsplit = maxsplit or 0
    7. local retval = {}
    8. local pos = 1
    9. local step = 0
    10. while true do
    11. local from, to = string.find(line, sep, pos, true)
    12. step = step + 1
    13. if (maxsplit ~= 0 and step > maxsplit) or not from then
    14. local item = string.sub(line, pos)
    15. table.insert(retval, item)
    16. break
    17. else
    18. local item = string.sub(line, pos, from - 1)
    19. table.insert(retval, item)
    20. pos = to + 1
    21. end
    22. end
    23. return retval
    24. end
    25. --连接EmmyLua
    26. local function connectEmmyLua()
    27. local func = function()
    28. local assets = CS.UnityEngine.Application.dataPath
    29. local assetDict = split(assets, "/")
    30. local path = ''
    31. for i = 1, #assetDict-1 do
    32. path = path .. assetDict[i] .. '/'
    33. end
    34. package.cpath = package.cpath .. ';' .. path .. 'Tools/EmmyLua/emmy_core.dll'
    35. local dbg = require('emmy_core')
    36. dbg.tcpConnect('localhost', 9966)
    37. end
    38. local handle = function(error)
    39. print('IDE没有开启调试', error)
    40. end
    41. xpcall(func, handle)
    42. end

    3 配置debug使用的launch.json

    1. {
    2. // 使用 IntelliSense 了解相关属性。
    3. // 悬停以查看现有属性的描述。
    4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    5. "version": "0.2.0",
    6. "configurations": [
    7. {
    8. "type": "emmylua_new",
    9. "request": "launch",
    10. "name": "EmmyLua New Debug",
    11. "host": "localhost",
    12. "port": 9966,
    13. "ext": [
    14. ".lua",
    15. ".lua.txt",
    16. ".lua.bytes",
    17. ".txt"
    18. ],
    19. "ideConnectDebugger": false
    20. },
    21. ]
    22. }

    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断点,但是报错"无法加载源",看不到源码。

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

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

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

    luaPath = GetRealPath(luaPath)

    解决问题

    5 vscode启动debug

    6 设置断点后运行游戏

    参考资料

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

  • 相关阅读:
    基于注意力机制卷积神经网络结合门控单元CNN-GRU-SAM-Attention实现柴油机故障诊断附matlab代码
    如何使用企业经营异常信息API及其应用实例
    element-ui《input》输入框效验
    前端该如何优雅地Mock数据
    nvm安装详细教程(卸载旧的nodejs,安装nvm、node、npm、cnpm、yarn及环境变量配置)
    freertos之资源管理
    2022.11.28总结
    【HTTP协议】HTTP协议初体验,深入浅出网络协议
    MMDetection库中的一些模块介绍
    用c语言程序实现冒泡法排序
  • 原文地址:https://blog.csdn.net/ak47007tiger/article/details/127869894
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号