ZeroBrane远程调试嵌入式脚本

时间:2018-12-10 21:20:26

标签: lua c++builder luajit zerobrane

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

如果没有此行脚本,则可以正常运行。有什么线索吗?

1 个答案:

答案 0 :(得分:1)

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

我唯一知道的划分是使用tostring(1/0)代码生成平台无关的NaN值的序列化代码。这会导致Lua配置中出现“浮点除以零”错误吗?

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

相关问题