Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从Xcode调试器调用lua_getstack_C++_Xcode_Lua_Lldb - Fatal编程技术网

C++ 从Xcode调试器调用lua_getstack

C++ 从Xcode调试器调用lua_getstack,c++,xcode,lua,lldb,C++,Xcode,Lua,Lldb,我正在调试一个使用Lua5.1的C/C++应用程序。在这个阶段,在调试时,有一种在Lua堆栈上转储数据的可读表示的方法是非常有用的。我已经找到了函数lua_getstack,它看起来是正确的类型,但是我找不到通过LLDB命令行调用它并将其打印为人类可读的内容的方法。有更好的方法吗?您可以使用类似的方法,然后从调试器调用它: void lua_stackdump(lua_State *L) { int i; int top = lua_gettop(L); for (i = 1; i

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

您可以使用类似的方法,然后从调试器调用它:

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 */
}
void lua\u stackdump(lua\u State*L)
{
int i;
int top=lua_gettop(L);

对于(i=1;i,您可以使用类似的内容,然后从调试器调用它:

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 */
}
void lua\u stackdump(lua\u State*L)
{
int i;
int top=lua_gettop(L);

对于(i=1;i)或者,如果您需要有关堆栈的更多信息,您可以使用并扩展my,这与此stackdump相同,但也会遍历堆栈上的表。相同的调试将是
void trystack(lua_State*L){LuaStack S;crawstack(L,S);PrintStack(S);}
如果它真的可以在DebuggerAlternative中运行,如果您需要有关堆栈的更多信息,您可以使用并扩展my,这与此stackdump相同,但也会遍历堆栈上的表。相同的调试只是
void trystack(lua_State*L){LuaStack s;CrawlStack(L,s);PrintStack(s)}
以防它在调试器中真正可以运行