从Xcode调试器调用lua_getstack

时间:2012-11-19 09:56:52

标签: c++ xcode lua lldb

我正在尝试调试使用Lua 5.1的C / C ++应用程序。在这个阶段,在调试时有一种在Lua堆栈上转储人类可读的数据表示的方法非常有用。我发现函数lua_getstack看起来像是正确的东西,但我找不到通过LLDB命令行调用它并将其打印为人类可读的东西的方法。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:3)

您可以使用类似的东西,然后从调试器中调用它:

void lua_stackdump(lua_State *L) 
{
  int i;
  int top = lua_gettop(L);
  for (i = 1; i <= top; i++) { /* repeat for each level */
    int t = lua_type(L, i);
    switch (t) {
      case LUA_TSTRING: { /* strings */
         printf("’%s’\n", lua_tostring(L, i));
         break;
      }
      case LUA_TBOOLEAN: { /* booleans */
         printf(lua_toboolean(L, i) ? "true" : "false");
         break;
      }
      case LUA_TNUMBER: { /* numbers */
         printf("%g\n", lua_tonumber(L, i));
         break;
      }
      default: { /* other values */
         printf("%s\n", lua_typename(L, t));
         break;
      }
    }
  }
  printf("\n"); /* end the listing */
}