c++ - 调试嵌入式 Lua 5.2.2 代码

标签 c++ debugging ide lua lua-5.2

如何调试嵌入在我的 C++ 应用程序中的 Lua 5.2.2 代码?

我已经看过这个question并且其中提供的所有 IDE 都处理 5.1 及更低版本,当我尝试将它们与 5.2.2 一起使用时,它们会崩溃。

最佳答案

您应该能够使用 ZeroBrane Studio 调试您的应用程序通过关注 instructions for Lua 5.2 debugging .请注意,您需要针对 Lua5.2 编译 luasocket。 (您看到的崩溃可能是因为您的应用程序加载了针对 Lua5.1 编译的 luasocket,而后者又加载了 Lua5.1 DLL 或无法找到所需的符号。)

如果您不想编译 luasocket,您可以从 this folder and its subfolders 获取适用于 Windows/OSX/Linux 的二进制文件。 ;只需确保这些库位于 LUA_CPATH 中,位于任何可能针对 Lua5.1 编译 luasocket 的文件夹之前。

[根据聊天讨论更新]您可能遇到多个 VM 问题的原因是您的应用可能是静态编译 Lua 解释器。然后加载 luasocket(直接或通过 mobdebug),它是针对 lua52.dll 编译的,它加载解释器的另一个拷贝。为了避免这种情况,您有两种选择:(1) 将 luasocket 编译到您的应用程序中,就像您包含 lua 解释器本身一样;除了一个 mobdebug.lua 文件来调试你的应用程序,你不需要任何其他东西,或者 (2) 使用代理 dll;它看起来像 lua52.dll,但实际上会代理您对静态编译的 lua 库的调用,从而避免多个 VM 出现问题。 proxy dll适用于 Lua 5.1,但您可以调整脚本以使其适用于 Lua 5.2。

(如果您的解释器不是静态编译的,如果您加载的 Lua DLL 的名称与 lua52.dll 不同,您可能仍然会得到两个解释器。)

关于c++ - 调试嵌入式 Lua 5.2.2 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18679759/

相关文章:

android-studio - 如果我没有公司,我应该在 Android Studio 中为 "company domain"添加什么?

java - 如何为我的 Web 应用程序创建具有自动完成功能的所见即所得代码编辑器?

html - Chrome开发者窗口能否同时覆盖css规则?

c++ - 通过大参数自动使用 const-ref

c++ - &i 和 p 都指向同一个变量但显示不同的结果?

debugging - 为 Windows 服务设置事后调试器

ruby-on-rails - 如何禁用扩展 HTTParty 的 gem 中的日志记录?

c++ - 关于operator new()和operator delete()的问题

c++ - for循环中的构造函数问题

debugging - salt 栈 : Reverse engineering where a file comes from