diff --git a/emmy_debugger/include/emmy_debugger/debugger/emmy_debugger.h b/emmy_debugger/include/emmy_debugger/debugger/emmy_debugger.h index 8ad2e62..b06519b 100644 --- a/emmy_debugger/include/emmy_debugger/debugger/emmy_debugger.h +++ b/emmy_debugger/include/emmy_debugger/debugger/emmy_debugger.h @@ -143,5 +143,6 @@ class Debugger: public std::enable_shared_from_this Arena *arenaRef; + bool displayCustomTypeInfo; std::bitset registeredTypes; }; diff --git a/emmy_debugger/src/debugger/emmy_debugger.cpp b/emmy_debugger/src/debugger/emmy_debugger.cpp index fe5bf8b..20887d4 100644 --- a/emmy_debugger/src/debugger/emmy_debugger.cpp +++ b/emmy_debugger/src/debugger/emmy_debugger.cpp @@ -41,7 +41,8 @@ Debugger::Debugger(lua_State *L, EmmyDebuggerManager *manager) running(false), skipHook(false), blocking(false), - arenaRef(nullptr) { + arenaRef(nullptr), + displayCustomTypeInfo(false) { } Debugger::~Debugger() { @@ -371,7 +372,7 @@ void Debugger::GetVariable(lua_State *L, Idx variable, int index, int variable->valueType = type; if (queryHelper) { - if (type >= 0 && type < registeredTypes.size() && registeredTypes.test(type) + if (displayCustomTypeInfo && type >= 0 && type < registeredTypes.size() && registeredTypes.test(type) && manager->extension.QueryVariableCustom(L, variable, typeName, index, depth)) { return; } @@ -1430,24 +1431,25 @@ void Debugger::ExecuteOnLuaThread(const Executor &exec) { } int Debugger::GetTypeFromName(const char* typeName) { - if (strcmp(typeName, "nil") == 0) return LUA_TNIL; - if (strcmp(typeName, "boolean") == 0) return LUA_TBOOLEAN; - if (strcmp(typeName, "lightuserdata") == 0) return LUA_TLIGHTUSERDATA; - if (strcmp(typeName, "number") == 0) return LUA_TNUMBER; - if (strcmp(typeName, "string") == 0) return LUA_TSTRING; - if (strcmp(typeName, "table") == 0) return LUA_TTABLE; - if (strcmp(typeName, "function") == 0) return LUA_TFUNCTION; - if (strcmp(typeName, "userdata") == 0) return LUA_TUSERDATA; - if (strcmp(typeName, "thread") == 0) return LUA_TTHREAD; - return -1; // 未知类型 + if (strcmp(typeName, "nil") == 0) return LUA_TNIL; + if (strcmp(typeName, "boolean") == 0) return LUA_TBOOLEAN; + if (strcmp(typeName, "lightuserdata") == 0) return LUA_TLIGHTUSERDATA; + if (strcmp(typeName, "number") == 0) return LUA_TNUMBER; + if (strcmp(typeName, "string") == 0) return LUA_TSTRING; + if (strcmp(typeName, "table") == 0) return LUA_TTABLE; + if (strcmp(typeName, "function") == 0) return LUA_TFUNCTION; + if (strcmp(typeName, "userdata") == 0) return LUA_TUSERDATA; + if (strcmp(typeName, "thread") == 0) return LUA_TTHREAD; + return -1; // 未知类型 } bool Debugger::RegisterTypeName(const std::string& typeName, std::string& err) { - int type = GetTypeFromName(typeName.c_str()); - if (type == -1) { - err = "Unknown type name: " + typeName; - return false; - } - registeredTypes.set(type); - return true; + int type = GetTypeFromName(typeName.c_str()); + if (type == -1) { + err = "Unknown type name: " + typeName; + return false; + } + displayCustomTypeInfo = true; + registeredTypes.set(type); + return true; } \ No newline at end of file diff --git a/emmy_debugger/src/debugger/extension_point.cpp b/emmy_debugger/src/debugger/extension_point.cpp index e048384..ea50bd8 100644 --- a/emmy_debugger/src/debugger/extension_point.cpp +++ b/emmy_debugger/src/debugger/extension_point.cpp @@ -140,7 +140,7 @@ bool ExtensionPoint::QueryVariableGeneric(lua_State *L, Idx variable, result = lua_toboolean(L, -1); } else { const auto err = lua_tostring(L, -1); - printf("query error in %s: %s\n", queryFunction, err); + printf("query error in %s: %s\n", queryFunction, err); } } } @@ -150,11 +150,11 @@ bool ExtensionPoint::QueryVariableGeneric(lua_State *L, Idx variable, } bool ExtensionPoint::QueryVariable(lua_State *L, Idx variable, const char *typeName, int object, int depth) { - return QueryVariableGeneric(L, variable, typeName, object, depth, "queryVariable"); + return QueryVariableGeneric(L, variable, typeName, object, depth, "queryVariable"); } bool ExtensionPoint::QueryVariableCustom(lua_State *L, Idx variable, const char *typeName, int object, int depth) { - return QueryVariableGeneric(L, variable, typeName, object, depth, "queryVariableCustom"); + return QueryVariableGeneric(L, variable, typeName, object, depth, "queryVariableCustom"); } lua_State *ExtensionPoint::QueryParentThread(lua_State *L) {