使用ZeroBrane远程调试嵌入式脚本

我在Embarcadero C ++ Builder XE10.2上开发图像处理应用程序,该应用程序执行Lua脚本。我使用带有FFI的LuaJIT共享图像数据,一切正常。我已经下载了ZeroBrane工作室,并尝试看看是否可以调试从“主机”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()

这一行崩溃。没有这一行,脚本可以正常工作。有什么线索吗?

点赞
用户1442917
用户1442917

问题描述

提供的信息不足以确定问题的原因,但是你可以尝试获取堆栈跟踪(使用 这个 SO 回答),它应该提供有关导致错误的更多信息。

我唯一了解的除法是序列化代码中使用 tostring(1/0) 代码来生成平台无关的 NaN 值。这会导致您的 Lua 配置出现 "浮点数被零除" 错误吗?

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

2018-12-10 21:55:18