如何使用 ZeroBrane 调试 Premake5

How to debug Premake5 with ZeroBrane

我在尝试使用 ZeroBrane

在 macOS Sierra 10.12 上调试 Premake5 (https://github.com/premake/premake-core) 时遇到问题

我已经按照 ZeroBrane 文档中的描述添加了 package.cpath 和 package.path(在调用 require('mobdebug').start() 之前),但我总是遇到同样的错误:

Error: error loading module 'socket.core' from file '/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs53/socket/core.dylib':
    file is not a bundle

或者,如果我用 LUA_USE_DLOPEN 重新编译 Lua,我会得到一个不同的错误:

Error: error loading module 'socket.core' from file '/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib':
    dlopen(/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib, 2): Symbol not found: _luaL_prepbuffsize
  Referenced from: /Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib
  Expected in: flat namespace
 in /Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib

有什么帮助吗?

谢谢

您在 Premake 中使用的 Lua 版本似乎与编译 luasocket 库的版本不同。 "file is not a bundle" 是 Lua 5.1 消息,当文件加载器无法在 MacOS 上加载动态库并出现 NSObjectFileImageInappropriateFile 错误时显示。在这种情况下,您要从 Lua 5.1 解释器 (/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs53/socket/core.dylib).

加载为 Lua 5.3 编译的库

在第二种情况下,您实际上是在加载 Lua 5.1 库 (/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib),但鉴于错误消息 (Symbol not found: _luaL_prepbuffsize),您似乎是从 Lua 5.2 或 Lua 5.3 解释器(因为 luaL_prefbuffsize 是在 Lua 5.2 中引入的)。

只要您使用的解释器与您尝试加载的模块版本匹配,您就应该能够毫无问题地加载模块。