如何使用 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 中引入的)。
只要您使用的解释器与您尝试加载的模块版本匹配,您就应该能够毫无问题地加载模块。
我在尝试使用 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.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 中引入的)。
只要您使用的解释器与您尝试加载的模块版本匹配,您就应该能够毫无问题地加载模块。