cLuaState: Added LogStackTrace() and GetTypeText() utility functions
This commit is contained in:
parent
5ba5864349
commit
e0e8e18ab2
@ -884,6 +884,49 @@ bool cLuaState::ReportErrors(lua_State * a_LuaState, int a_Status)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cLuaState::LogStackTrace(void)
|
||||||
|
{
|
||||||
|
LOGWARNING("Stack trace:");
|
||||||
|
lua_Debug entry;
|
||||||
|
int depth = 0;
|
||||||
|
while (lua_getstack(m_LuaState, depth, &entry))
|
||||||
|
{
|
||||||
|
int status = lua_getinfo(m_LuaState, "Sln", &entry);
|
||||||
|
assert(status);
|
||||||
|
|
||||||
|
LOGWARNING(" %s(%d): %s", entry.short_src, entry.currentline, entry.name ? entry.name : "?");
|
||||||
|
depth++;
|
||||||
|
}
|
||||||
|
LOGWARNING("Stack trace end");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AString cLuaState::GetTypeText(int a_StackPos)
|
||||||
|
{
|
||||||
|
int Type = lua_type(m_LuaState, a_StackPos);
|
||||||
|
switch (Type)
|
||||||
|
{
|
||||||
|
case LUA_TNONE: return "TNONE";
|
||||||
|
case LUA_TNIL: return "TNIL";
|
||||||
|
case LUA_TBOOLEAN: return "TBOOLEAN";
|
||||||
|
case LUA_TLIGHTUSERDATA: return "TLIGHTUSERDATA";
|
||||||
|
case LUA_TNUMBER: return "TNUMBER";
|
||||||
|
case LUA_TSTRING: return "TSTRING";
|
||||||
|
case LUA_TTABLE: return "TTABLE";
|
||||||
|
case LUA_TFUNCTION: return "TFUNCTION";
|
||||||
|
case LUA_TUSERDATA: return "TUSERDATA";
|
||||||
|
case LUA_TTHREAD: return "TTHREAD";
|
||||||
|
}
|
||||||
|
return Printf("Unknown (%d)", Type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// cLuaState::cRef:
|
// cLuaState::cRef:
|
||||||
|
|
||||||
|
@ -782,6 +782,12 @@ public:
|
|||||||
/// If the status is nonzero, prints the text on the top of Lua stack and returns true
|
/// If the status is nonzero, prints the text on the top of Lua stack and returns true
|
||||||
static bool ReportErrors(lua_State * a_LuaState, int status);
|
static bool ReportErrors(lua_State * a_LuaState, int status);
|
||||||
|
|
||||||
|
/// Logs all items in the current stack trace to the server console
|
||||||
|
void LogStackTrace(void);
|
||||||
|
|
||||||
|
/// Returns the type of the item on the specified position in the stack
|
||||||
|
AString GetTypeText(int a_StackPos);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
lua_State * m_LuaState;
|
lua_State * m_LuaState;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user