luaL_dofile 错误。

出现了 "luaL_dofile" 行错误但调试器没有显示任何关于错误的信息。

我可以使用命令 "luaL_dostring",但我不知道为什么不能使用 dofile。

我的代码如下:

const char* file = "/app_home/data/minigames/mg_hint_machine_2.lua";
ret = luaL_dofile(LS, file);
if(ret != 0){
    PRINTF("Error occurs when calling luaL_dofile() Hint Machine 0x%x\n",ret);
    }
else PRINT("\nDOFILE SUCCESS");

调试器显示错误在这一行,且 "ret" 仍未从 dofile 取回返回值。

如果您想在调试器中查看错误信息

02C2D304 7C21016A stdux r1,r1,r0 03 (02C2D300) REG PIPE LSU

调试器指向这行,但我不明白它。

点赞
用户1599503
用户1599503

将下面翻译成中文并且保留原本的 markdown 格式,

在 if 语句的代码块中加入下面这行代码,将帮助我们更准确地定位问题:

printf("%s\\n",lua_tostring(LS,-1));

这将告诉我们在 Lua 崩溃时它所报告的内容。

2012-08-17 01:56:26
用户221955
用户221955

作为对 superzilla 回答的详细解释(请给其回答点赞而非本回答),要获取错误信息,您的代码需要像这样:

const char* file = "/app_home/data/minigames/mg_hint_machine_2.lua";
ret = luaL_dofile(LS, file);
if(ret != 0){
  PRINTF("调用 luaL_dofile() 提示机时发生错误 0x%x\n",ret);
  PRINTF("错误信息: %s", lua_tostring(LS,-1));
}
else PRINT("\nDOFILE 成功");

您在评论中的更改将 luaL_dofile 更改为 luaL_dostring,这就是为什么您会收到意外错误消息的原因(就像这里所提到的)。

2012-08-17 06:08:07