From 205f9aa67b43b3d9b5059769cfc1ed0265341586 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 17 Mar 2025 14:30:43 -0300 Subject: New function 'printallstack' in test library --- ltests.c | 23 +++++++++++++++++++++++ ltests.h | 1 + 2 files changed, 24 insertions(+) diff --git a/ltests.c b/ltests.c index d3509862..5b4a6000 100644 --- a/ltests.c +++ b/ltests.c @@ -872,6 +872,28 @@ void lua_printstack (lua_State *L) { } +int lua_printallstack (lua_State *L) { + StkId p; + int i = 1; + CallInfo *ci = &L->base_ci; + printf("stack: >>\n"); + for (p = L->stack.p; p < L->top.p; p++) { + if (ci != NULL && p == ci->func.p) { + printf(" ---\n"); + if (ci == L->ci) + ci = NULL; /* printed last frame */ + else + ci = ci->next; + } + printf("%3d: ", i++); + lua_printvalue(s2v(p)); + printf("\n"); + } + printf("<<\n"); + return 0; +} + + static int get_limits (lua_State *L) { lua_createtable(L, 0, 5); setnameval(L, "IS32INT", LUAI_IS32INT); @@ -2102,6 +2124,7 @@ static const struct luaL_Reg tests_funcs[] = { {"limits", get_limits}, {"listcode", listcode}, {"printcode", printcode}, + {"printallstack", lua_printallstack}, {"listk", listk}, {"listabslineinfo", listabslineinfo}, {"listlocals", listlocals}, diff --git a/ltests.h b/ltests.h index cc372b8f..af5641ba 100644 --- a/ltests.h +++ b/ltests.h @@ -94,6 +94,7 @@ LUAI_FUNC void lua_printvalue (struct TValue *v); ** Function to print the stack */ LUAI_FUNC void lua_printstack (lua_State *L); +LUAI_FUNC int lua_printallstack (lua_State *L); /* test for lock/unlock */ -- cgit v1.2.3-55-g6feb