如何在lua脚本中设置断点

我正在使用c++编写一个大型项目。在这个项目中会调用一些lua脚本来实现某些功能。现在我想在lua脚本中设置断点,但我不知道该如何做。我希望能有像 python 中的 "pdb.set_trace()" 这样的东西。 任何想法都将不胜感激。先谢谢了。

点赞
用户3642914
用户3642914

不幸的是,Lua没有内置的调试器,并且Lua独立环境中可用的许多调试选项在嵌入式Lua情况下不可用。

一种处理方法是通过“脚本化”调试 - 只需在代码中广泛使用print(whatever)和print(debug.traceback()),可能由DEBUG全局变量打开或关闭(可能由C++代码中的DEBUG #define设置),以便在生产可执行文件中不会发出消息。

此外,当使用lua_pcall()时,如果函数出现错误,则调用debug.traceback()并将生成的字符串放入堆栈中。您可以使用以下方法获得它:

lua_pushcfunction(L, c_function_name);
lua_pushnumber(L, 5.3);
if (lua_pcall(L, 1, 0, 0) != 0) lua_error(L);

注意:除非您首先打开调试库(使用luaopen_debug(L);,其中L是您的lua_State *),否则所有这些都无效。

如果您确实需要交互式调试,正如@Colonel Thirty Two所说,您应该找到一个交互式调试库;我确信这里有一个可用的,但这超出了StackOverflow问题的范围。

2016-02-16 17:03:20