如何在lua脚本中设置断点

时间:2016-02-16 12:21:52

标签: debugging lua breakpoints

我正在使用c ++编写一个大项目。在这个项目中,将调用一些lua脚本来实现函数。现在我想在lua脚本中设置断点但我不知道该怎么做。对于python,我更喜欢像“pdb.set_trace()”这样的东西。 任何想法将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,Lua没有内置的调试器,Lua独立的许多调试选项在嵌入式Lua场景中不可用。

解决这个问题的一种方法是"脚本在"调试 - 简单地在整个代码中使用print(无论)和print(debug.traceback()),可能由DEBUG全局(可能由C ++代码中的DEBUG #define设置)打开或关闭,以便消息不会# 39;在生产可执行文件中发出。

此外,当使用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问题的范围。