我正在使用 C++ 编写一个大型项目。在这个项目中,会调用一些lua脚本来实现功能。现在我想在 lua 脚本中设置断点,但我不知道该怎么做。对于 python,我更喜欢类似“pdb.set_trace()”的东西。 任何想法将不胜感激。提前致谢。
最佳答案
不幸的是,Lua 没有内置调试器,并且在 Lua 独立版中可用的许多调试选项在嵌入式 Lua 场景中不可用。
处理这个问题的一种方法是在调试中“编写脚本”——简单地在整个代码中自由地使用 print(whatever) 和 print(debug.traceback()),可能由 DEBUG 全局(可能设置)打开或关闭通过 DEBUG #define 在 C++ 代码中),这样消息就不会在生产可执行文件中发出。
此外,当使用 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 三十二所说,你应该找到一个交互式调试库;我确定有一个可用,但这超出了 StackOverflow 问题的范围。
关于debugging - 如何在lua脚本中设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432504/