ZeroBrane 远程调试嵌入式脚本

ZeroBrane remote debugging embedded script

我在执行 Lua 脚本的 Embarcadero C++ Builder XE10.2 中处理图像处理应用程序。我使用 LuaJIT 和 FFI 共享图像数据。一切正常。我已经下载了 ZeroBrane studio 并尝试查看是否可以调试从 "host" C++ 应用程序执行的脚本,所以我包含了

package.path = package.path .. ";C:/Portable_App/ZeroBraneStudio/lualibs/mobdebug/?.lua"
package.cpath = package.cpath .. ";C:/Portable_App/ZeroBraneStudio/bin/clibs/?.dll"
require("mobdebug").start()

在调用脚本中的任何函数之前。但是,当加载并执行脚本时(在 C++ 端):

FResult = lua_pcall(FLs, 0, 0, 0);

宿主程序崩溃并出现 "floating point division by zero" 异常。它崩溃于

require("mobdebug").start()

没有这一行脚本工作正常。有什么线索吗?

根据提供的信息无法判断可能出了什么问题,但您可以尝试获取堆栈跟踪(使用 this SO answers),它应该提供有关导致错误的原因的更多信息.

我知道的唯一区别是序列化代码使用 tostring(1/0) 代码生成平台无关的 NaN 值。这会导致您的 Lua 配置出现 "floating point division by zero" 错误吗?

(更新以包含评论中提到的解决方案)该问题与 BCC 编译器设置有关如何处理 FPU 异常。一种方法是操纵 FP 控件:_clear87(); _control87(MCW_EM, MCW_EM); 或设置算术异常掩码:SetExceptionMask(exAllArithmeticExceptions);.