如何诊断涉及LuaJIT的应用程序崩溃

我正在尝试从一些未储存在文件系统中的文本中加载 Lua 的一块。我添加了一个元素到 package.loaders 中来通过 C 进行此操作。但是,一旦我在 C 中调用 lua_load 来加载/执行该块,应用程序就会停止、崩溃,没有任何异常抛出。应用程序就此消失了。

这是一个相当严重的问题。现在我正在尝试调试这个问题,但如果在生产环境中真的发生了这种情况会发生什么呢?我一定漏掉了什么。我们如何编写质量高、适用于生产的代码,而不会让 LuaJIT 中止应用程序?我漏掉了什么?

一个相关的 Stackoverflow 文章 建议在常规 Lua 中运行应用程序。我试了一下,它运行得很好。所以,LuaJIT 中的某些东西不喜欢我的代码。我找不到原因。

我可能正在提出两个问题:

  • 如何找出这个特定代码的具体问题。它能在常规 Lua 中工作,在 LuaJIT 中失败。

  • 我们如何使用 LuaJIT,使其在遇到不喜欢的问题时,不会完全中止整个过程?

LuaJIT 中的崩溃出现在 lib_package.c 中的 lua_call(L,1,1);/ *运行加载的模块* / 附近,大约在第 431 行。

点赞