从Xcode调试器中调用lua_getstack函数。

我正在调试一个使用Lua 5.1的C / C ++应用程序。在这个阶段,如果有一种方法可以在调试过程中转储Lua堆栈上的数据的可读表示,那么这将非常有用。我找到了函数lua_getstack,它看起来像是正确的函数,但我无法找到一种通过LLDB命令行调用它并将其打印为人类可读内容的方法。有更好的方法吗?

点赞
用户1157444
用户1157444

你可以使用下面这个函数,在调试器中调用它:

void lua_stackdump(lua_State *L)
{
  int i;
  int top = lua_gettop(L);
  for (i = 1; i <= top; i++) { /* 重复每个级别 */
    int t = lua_type(L, i);
    switch (t) {
      case LUA_TSTRING: { /* 字符串 */
         printf("‘%s’\n", lua_tostring(L, i));
         break;
      }
      case LUA_TBOOLEAN: { /* 布尔 */
         printf(lua_toboolean(L, i) ? "true" : "false");
         break;
      }
      case LUA_TNUMBER: { /* 数字 */
         printf("%g\n", lua_tonumber(L, i));
         break;
      }
      default: { /* 其他值 */
         printf("%s\n", lua_typename(L, t));
         break;
      }
    }
  }
  printf("\n"); /* 结束列表 */
}
2012-11-19 10:23:25