0

Lua 5.1 を使用する C/C++ アプリケーションをデバッグしようとしています。この段階で、デバッグ中に Lua スタック上のデータの人間が判読できる表現をダンプする方法があると非常に便利です。正しい種類のもののように見える関数lua_getstackを見つけましたが、LLDB コマンドラインから呼び出して、人間が読める形式で出力する方法が見つかりません。これを行うより良い方法はありますか?

4

1 に答える 1

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 */
}
于 2012-11-19T10:23:25.180 に答える