【问题标题】:ZeroBrane - Debugging with NLua & Visual Studio (for macOS)ZeroBrane - 使用 NLua 和 Visual Studio 进行调试(适用于 macOS)
【发布时间】:2019-09-17 15:20:05
【问题描述】:

有没有办法使用 ZeroBraneStudio 调试 Lua 脚本,但通过 Visual Studio for macOS 甚至 Windows(不是 VS Code)的 C# 中的 NLua 加载/初始化脚本?

这样做的主要原因是为了让 NLua 中包含的 CLR 包互操作性可用于 ZBS 中的 Lua。

我无法让 ZBS 中的远程调试功能与 NLua 一起使用。当程序处于调试模式时,Lua 脚本中对 require("mobdebug").start() 的调用确实会触发 Visual Studio 中的断点,但不会触发设置 ZBS 的断点。是否需要更多配置?

请多谢

-- 更新 1:

line 打印输出:

BASEDIR /Users/B1313/Desktop/MyProject/
DELB * 0
SETB Modules/Test.lua 88
SETB Modules/Test.lua 94
LOAD 1272 ScriptCode/Main.lua
--[[

【问题讨论】:

    标签: lua zerobrane nlua


    【解决方案1】:

    这很可能是由于调试器获取的路径与 IDE 中设置的路径(设置断点时使用)不匹配造成的。您可能需要查看常见问题解答 (https://studio.zerobrane.com/doc-faq#why-breakpoints-are-not-triggered) 中有关断点的部分,尤其是列表中的第 3 项和第 4 项。

    【讨论】:

    • 根据ZBS,通过ZBS执行时source = "@./ScriptCode/Main.lua",根据VS for Mac,执行VS时source = "@/Users/B1313/Desktop/MyProject/ScriptCode/Main.lua"。看起来文件大小写是正确的,但路径有些不同。我将如何让它们变得相同(根据文档,它们看起来是标准化的)?我会假设 ZBS 正在做一些关于设置项目目录导致路径不完全合格的事情,对吗?
    • 正确,ZBS根据IDE中设置的项目路径为调试器设置basedir值。您可以尝试添加require('mobdebug').basedir('/Users/B1313/Desktop/MyProject/') before .start() call。
    • 谢谢保罗!我现在走得更远了,但看起来与 NLua 使用的 LuaSocket 和 Lua 5.2+ 存在一些不兼容。具体来说,error loading module 'socket.core' ... 'Symbol not found: _luaL_openlib' 我怀疑有没有办法在没有 LuaSocket 的情况下运行 ZBS 的调试功能,对吗?奇怪的是,是否有任何其他 C# - Lua 互操作性库可能您/其他人尝试过与 ZBS 一起使用?
    • 这很奇怪,因为 Lua 5.2 没有openlib。你确定你正在加载正确的 luasocket 版本吗?您可能需要检查package.cpath 是否指向ZeroBraneStudio/bin/clibs52 中的库而不是clibs(ZBS 为您设置环境,但由于您在它之外运行,您可能需要自己设置正确的库)。跨度>
    • 我发现了问题所在。我在脚本中调用require("mobdebug").start() 为时已晚(即,一旦我的模块加载并运行)。我将远程调试的方向误解为在第一个断点之前调用调试器开始——这是错误的。它需要作为整个脚本环境的第一个调用/几行代码(例如,大约在同一位置设置包路径字段)。 -- 我稍后会更新 OP 的更多细节。感谢 Paul 的所有帮助(和 ZBS)!没有它,我永远不会走到这一步
    猜你喜欢
    • 2014-09-11
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2011-08-23
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多