Bluelua 支持 lua 代码调试

如题所述

Bluelua 现已集成 LuaPanda,一个基于 VS Code 的 lua 代码调试器,实现简易,兼容多种开发框架。需要注意的是,仅在 Bluelua 非 Shipping 版本中启用 LuaPanda 调试功能。

在集成 LuaPanda 的过程中,遇到两个主要问题。首先是游戏打包后,LuaPanda 中的 hook 模块崩溃。原因在于,使用默认的 chook 调试库时,它在寻找 lua 库函数(如 lua_settop)时动态查找,而打包后的游戏只有一个 exe 文件,无法查找到这些函数,导致崩溃。官方已得知此问题。

解决此问题有两种方法:一种是使用 lua 版本的调试库,通过注释 LuaPanda.lua 文件中的相关代码,但这种方式会降低调试效率;另一种是将 chook 库以源码形式集成到项目中,包括将libpdebug.h/.cpp 文件添加到项目内一起编译,开启 USE_SOURCE_CODE 宏,并在创建 lua_State 时调用 pdebug_init() 函数。Bluelua 采用后一种方式集成。

另一个问题是游戏在调试时卡死。原因在于在 VSCode 没有处于调试监听状态时,游戏试图连接并启动调试,这导致卡死。解决方法是确保 VSCode 的调试状态正常关闭。

在路径匹配问题中,VSCode 会根据 lua 虚拟机获取的当前 lua 文件名来判断调试的文件。为避免混淆,游戏加载 lua 文件时最好使用相对路径,这样在 PC 开发机上调试手机时不会出现问题。Bluelua 中最后一个参数传的是相对于 Content 目录的路径,因此 VSCode 里的工作目录也应设为 Content 目录。

集成 LuaPanda 后,调试界面将提供直观的调试体验,包括断点、单步执行等常见调试功能,为开发者提供便利。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜