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);
.
我在执行 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);
.