我在执行Lua脚本的Embarcadero C ++ Builder XE10.2中处理图像处理应用程序。我将LuaJIT与FFI一起使用以共享图像数据。一切正常。我已经下载了ZeroBrane studio,并尝试查看是否可以调试从“主机” 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);
主机程序因“浮点除以零”异常而崩溃。它崩溃了
require("mobdebug").start()
如果没有此行脚本,则可以正常运行。有什么线索吗?
答案 0 :(得分:1)
根据所提供的信息无法确定可能出了什么问题,但是您可以尝试获取堆栈跟踪(使用this SO answers),该跟踪应该提供有关导致错误的原因的更多信息。 / p>
我唯一知道的划分是使用tostring(1/0)
代码生成平台无关的NaN
值的序列化代码。这会导致Lua配置中出现“浮点除以零”错误吗?
(进行更新以包括注释中提到的解决方案)该问题与BCC编译器设置有关如何处理FPU异常有关。一种方法是操纵FP控制:_clear87(); _control87(MCW_EM, MCW_EM);
或设置算术异常掩码:SetExceptionMask(exAllArithmeticExceptions);
。