Debugging 如何在lua脚本中设置断点 我用C++写了一个大项目。在这个项目中,将调用一些lua脚本来实现函数。现在我想在lua脚本中设置断点,但我不知道如何做到这一点。对于python,我更喜欢类似于“pdb.set_trace()”的东西。 任何想法都将不胜感激。提前谢谢

Debugging 如何在lua脚本中设置断点 我用C++写了一个大项目。在这个项目中,将调用一些lua脚本来实现函数。现在我想在lua脚本中设置断点,但我不知道如何做到这一点。对于python,我更喜欢类似于“pdb.set_trace()”的东西。 任何想法都将不胜感激。提前谢谢,debugging,lua,breakpoints,Debugging,Lua,Breakpoints,不幸的是,Lua没有内置的调试器,而Lua单机版中的许多调试选项在嵌入式Lua场景中都不可用 处理这一点的一种方法是“在脚本中调试”——在代码中简单地使用打印(无论什么)和打印(调试.TraceBead()),可能通过调试全局(或者通过C++代码中的调试*定义)来打开或关闭,这样消息不会在生产执行文件中发出。 另外,在使用lua_pcall()时,如果函数有错误,它将调用debug.traceback()并将结果字符串放在堆栈上。您可以通过以下方式获得: lua_pushcfunction(L,

不幸的是,Lua没有内置的调试器,而Lua单机版中的许多调试选项在嵌入式Lua场景中都不可用

处理这一点的一种方法是“在脚本中调试”——在代码中简单地使用打印(无论什么)和打印(调试.TraceBead()),可能通过调试全局(或者通过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\u debug(L)打开调试库,否则这些都不起作用其中L是您的
lua\u状态*


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

Lua没有内置的调试器。您需要找到一个Lua调试器(不要问这个问题,这是离题的)并学习使用该调试器。有一个由调用的基本调试器。更好的方法是使用支持调试的Lua IDE并围绕函数编写Lua单元测试。请参阅/添加到标签。@ColonelThirtyTwo谢谢您的帮助idea@TomBlodget谢谢你的建议