macOS lua debug 环境搭建避坑指南
安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装 wget
brew install wget
删除用
brew uninstall wget
安装 lua5.3
brew install lua
删除用
brew uninstall lua
坑1:lua5.4 与 mobdebug 存在兼容性问题
不能使用 lua5.4,lua5.4现在对 mobdebug 兼容有问题。
|
|
安装 luarocks
参考:https://ttys3.dev/post/lua/luarocks-install-and-setup/
brew install luarocks -v
删除用
brew uninstall luarocks
坑2:brew install luarocks
安装版本不对
不能使用 brew install luarocks
,他会自己安装基于 lua5.4 的 luarocks。
官方安装文档:https://github.com/luarocks/luarocks/wiki/Installation-instructions-for-Unix
|
|
坑3:官方文档指令不能直接使用
官方文档说应该用 ./configure --with-lua-include=/usr/local/include
,但实际不能加 --with-lua-include=/usr/local/include
,这会导致 lua 依赖的路径错误。
可能会产生类似 Failed finding Lua header files. You may need to install them or configure LUA_INCDIR
的错误。
出现这种错误的原因还是 --with-lua-include=/usr/local/include
后边跟的这个路径不对,在我的环境中,应该为 --with-lua-include=/usr/local/opt/lua@5.3/include/lua5.3
。
在不指定这个参数的时候,会自动检测路径,未来避免出错,最好还是不要指定,除非系统里装了多版本的 lua 。
|
|
此时会提示:
|
|
让我们在 make && make install
和 make bootstrap
之间选择,此处推荐 make bootstrap
|
|
安装 luacheck、luasocket
坑4:rock tree 与安装 scope
在上一步安装完之后,会有类似以下输出:
|
|
其中:
Lua
指出 lua 依赖相关路径Configuration files
指出了配置文件路径Rocks trees in use
指出了安装lua_modules
时的目标根路径,后边括号里的"project"
、"user"
、"system"
,是指不同的scope
,使用luarocks install xxx
时应该格外注意安装的scope
是否正确。
像上边这个输出显示,project scope 是在 /tmp 下的一个路径,所以如果安装到这里的话,项目目录可能就找不到包。
这里应该格外注意的是:Rocks trees
是一个树状结构,这里边显示的是根路径,真实的安装目录应该是 Rocks trees
和 lib_modules_path
拼起来。
以system scope
为例,
运行指令 luarocks
,获得以下输出:
|
|
可知,luarocks
的system scope
中的 Rocks tree
路径为 /usr/local
运行 luarocks config --scope user lib_modules_path
,获得以下输出:
|
|
可知,luarocks
的system scope
中的lib_modules_path
为 /lib/lua/5.3/
此时如果要安装到 system scope
,这会安装到 /usr/local/lib/lua/5.3/
运行 lua -e 'require "abc"'
,获得以下输出:
|
|
上面输出的这些路径就是 lua 查找 package 时会检索的目录,应该保证 Rocks tree
和 lib_modules_path
拼接后的路径可以被 lua 检索到。
如果 lib_modules_path
路径不对,可以通过下面的指令进行配置:
|
|
一切就绪,安装 luacheck
和 luasocket
|
|
运行 lua -e 'require "socket"'
,如果没有报错,说明安装成功。
删除用
luarocks remove luasocket
使用 EmmyLua MobDebug 进行 debug
基本所有的 Lua debug 工具都基于 MobDebug ,像 EmmyLua 、 LuaPanda 。
IDEA 系列 IDE 推荐使用 EmmyLua ,vscode 编辑器推荐使用 LuaPanda 。
IDEA 中的 EmmyLua 插件已经集成了 MobDebug 。
使用 EmmyLua 中的 MobDebug 的方式,EmmyLua的文档里有很简略说明,
详见: https://emmylua.github.io/run.html#get-ready
step.1. 目录结构
|
|
需要将 src 标为 Sources(源 根),显示为蓝色。
从 https://github.com/pkulchenko/MobDebug 下载 MobDebug 项目,
将 MobDebug/src/mobdebug.lua
放到项目 src 目录面。
step.2. 创建运行配置
step.3. 创建 debug 配置
step.4. 进行debug
先点击 debug按钮 运行 Lua Remote(MobDebug)效果如下图
再点击运行按钮运行 dev1.lua,成功进入 debug 模式