从 Lua 端进行堆栈转储

有没有可能在 Lua 端(而不是 C/C++ 端)进行堆栈转储?

类似于这个例子,但从 Lua 端实现

static void stackDump (lua_State *L) {
          int i=lua_gettop(L);
          printf(" ----------------  Stack Dump ----------------" );
          while(  i   ) {
            int t = lua_type(L, i);
            switch (t) {
              case LUA_TSTRING:
                printf("%d:`%s'", i, lua_tostring(L, i));
              break;
              case LUA_TBOOLEAN:
                printf("%d: %s",i,lua_toboolean(L, i) ? "true" : "false");
              break;
              case LUA_TNUMBER:
                printf("%d: %g",  i, lua_tonumber(L, i));
             break;
             default: printf("%d: %s", i, lua_typename(L, t)); break;
            }
           i--;
          }
         printf("--------------- Stack Dump Finished ---------------" );
    }
点赞
用户7556173
用户7556173

也许调试库可以帮助您。例如,我们将使用 debug.getinfo 获取调用堆栈。

2018-11-24 07:07:59