Author: Pavel Labath Date: 2025-03-19T09:51:10+01:00 New Revision: 7dbcdd578cd4d37b1f4094dbd17556be6382f1cc
URL: https://github.com/llvm/llvm-project/commit/7dbcdd578cd4d37b1f4094dbd17556be6382f1cc DIFF: https://github.com/llvm/llvm-project/commit/7dbcdd578cd4d37b1f4094dbd17556be6382f1cc.diff LOG: Revert "[LLDB][Telemetry]Define TargetInfo for collecting data about a target (#127834)" This reverts commit 04e39ce3fddaaec41d9c7babcca55133d7e49969 due to test breakage. Added: Modified: lldb/include/lldb/Core/Telemetry.h lldb/source/Core/Telemetry.cpp lldb/source/Interpreter/CommandInterpreter.cpp lldb/source/Target/Process.cpp lldb/source/Target/Target.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index 28897f283dc55..29ec36b2d64d1 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -23,12 +23,9 @@ #include <atomic> #include <chrono> #include <ctime> -#include <functional> #include <memory> #include <optional> #include <string> -#include <type_traits> -#include <utility> namespace lldb_private { namespace telemetry { @@ -49,18 +46,12 @@ struct LLDBConfig : public ::llvm::telemetry::Config { // Specifically: // - Length: 8 bits // - First two bits (MSB) must be 11 - the common prefix -// - Last two bits (LSB) are reserved for grand-children of LLDBTelemetryInfo // If any of the subclass has descendents, those descendents -// must have their LLDBEntryKind in the similar form (ie., share common prefix -// and diff er by the last two bits) +// must have their LLDBEntryKind in the similar form (ie., share common prefix) struct LLDBEntryKind : public ::llvm::telemetry::EntryKind { - // clang-format off - static const llvm::telemetry::KindType BaseInfo = 0b11000000; - static const llvm::telemetry::KindType CommandInfo = 0b11010000; - static const llvm::telemetry::KindType DebuggerInfo = 0b11001000; - static const llvm::telemetry::KindType ExecModuleInfo = 0b11000100; - static const llvm::telemetry::KindType ProcessExitInfo = 0b11001100; - // clang-format on + static const llvm::telemetry::KindType BaseInfo = 0b11000000; + static const llvm::telemetry::KindType CommandInfo = 0b11010000; + static const llvm::telemetry::KindType DebuggerInfo = 0b11000100; }; /// Defines a convenient type for timestamp of various events. @@ -98,7 +89,7 @@ struct CommandInfo : public LLDBBaseTelemetryInfo { /// session. Necessary because we'd send off an entry right before a command's /// execution and another right after. This is to avoid losing telemetry if /// the command does not execute successfully. - uint64_t command_id = 0; + uint64_t command_id; /// The command name(eg., "breakpoint set") std::string command_name; /// These two fields are not collected by default due to PII risks. @@ -125,7 +116,7 @@ struct CommandInfo : public LLDBBaseTelemetryInfo { void serialize(llvm::telemetry::Serializer &serializer) const override; - static uint64_t GetNextID(); + static uint64_t GetNextId(); private: // We assign each command (in the same session) a unique id so that their @@ -155,59 +146,6 @@ struct DebuggerInfo : public LLDBBaseTelemetryInfo { void serialize(llvm::telemetry::Serializer &serializer) const override; }; -struct ExecutableModuleInfo : public LLDBBaseTelemetryInfo { - lldb::ModuleSP exec_mod; - /// The same as the executable-module's UUID. - UUID uuid; - /// PID of the process owned by this target. - lldb::pid_t pid = LLDB_INVALID_PROCESS_ID; - /// The triple of this executable module. - std::string triple; - - /// If true, this entry was emitted at the beginning of an event (eg., before - /// the executable is set). Otherwise, it was emitted at the end of an - /// event (eg., after the module and any dependency were loaded.) - bool is_start_entry = false; - - ExecutableModuleInfo() = default; - - llvm::telemetry::KindType getKind() const override { - return LLDBEntryKind::ExecModuleInfo; - } - - static bool classof(const TelemetryInfo *T) { - // Subclasses of this is also acceptable - return (T->getKind() & LLDBEntryKind::ExecModuleInfo) == - LLDBEntryKind::ExecModuleInfo; - } - void serialize(llvm::telemetry::Serializer &serializer) const override; -}; - -/// Describes an exit status. -struct ExitDescription { - int exit_code; - std::string description; -}; - -struct ProcessExitInfo : public LLDBBaseTelemetryInfo { - // The executable-module's UUID. - UUID module_uuid; - lldb::pid_t pid = LLDB_INVALID_PROCESS_ID; - bool is_start_entry = false; - std::optional<ExitDescription> exit_desc; - - llvm::telemetry::KindType getKind() const override { - return LLDBEntryKind::ProcessExitInfo; - } - - static bool classof(const TelemetryInfo *T) { - // Subclasses of this is also acceptable - return (T->getKind() & LLDBEntryKind::ProcessExitInfo) == - LLDBEntryKind::ProcessExitInfo; - } - void serialize(llvm::telemetry::Serializer &serializer) const override; -}; - /// The base Telemetry manager instance in LLDB. /// This class declares additional instrumentation points /// applicable to LLDB. diff --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp index 62ebdfc027d81..be929a644706e 100644 --- a/lldb/source/Core/Telemetry.cpp +++ b/lldb/source/Core/Telemetry.cpp @@ -76,9 +76,6 @@ void CommandInfo::serialize(Serializer &serializer) const { serializer.write("error_data", error_data.value()); } -std::atomic<uint64_t> CommandInfo::g_command_id_seed = 1; -uint64_t CommandInfo::GetNextID() { return g_command_id_seed.fetch_add(1); } - void DebuggerInfo::serialize(Serializer &serializer) const { LLDBBaseTelemetryInfo::serialize(serializer); @@ -86,26 +83,8 @@ void DebuggerInfo::serialize(Serializer &serializer) const { serializer.write("is_exit_entry", is_exit_entry); } -void ExecutableModuleInfo::serialize(Serializer &serializer) const { - LLDBBaseTelemetryInfo::serialize(serializer); - - serializer.write("uuid", uuid.GetAsString()); - serializer.write("pid", pid); - serializer.write("triple", triple); - serializer.write("is_start_entry", is_start_entry); -} - -void ProcessExitInfo::serialize(Serializer &serializer) const { - LLDBBaseTelemetryInfo::serialize(serializer); - - serializer.write("module_uuid", module_uuid.GetAsString()); - serializer.write("pid", pid); - serializer.write("is_start_entry", is_start_entry); - if (exit_desc.has_value()) { - serializer.write("exit_code", exit_desc->exit_code); - serializer.write("exit_desc", exit_desc->description); - } -} +std::atomic<uint64_t> CommandInfo::g_command_id_seed = 0; +uint64_t CommandInfo::GetNextId() { return g_command_id_seed.fetch_add(1); } TelemetryManager::TelemetryManager(std::unique_ptr<LLDBConfig> config) : m_config(std::move(config)), m_id(MakeUUID()) {} diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index e0bf5520e16ef..8e70922b9bb8d 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -1891,7 +1891,7 @@ bool CommandInterpreter::HandleCommand(const char *command_line, telemetry::TelemetryManager::GetInstance() ->GetConfig() ->detailed_command_telemetry; - const int command_id = telemetry::CommandInfo::GetNextID(); + const int command_id = telemetry::CommandInfo::GetNextId(); std::string command_string(command_line); std::string original_command_string(command_string); diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index d1962efec98a9..335991018070c 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -22,7 +22,6 @@ #include "lldb/Core/ModuleSpec.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/Progress.h" -#include "lldb/Core/Telemetry.h" #include "lldb/Expression/DiagnosticManager.h" #include "lldb/Expression/DynamicCheckerFunctions.h" #include "lldb/Expression/UserExpression.h" @@ -1067,26 +1066,6 @@ const char *Process::GetExitDescription() { bool Process::SetExitStatus(int status, llvm::StringRef exit_string) { // Use a mutex to protect setting the exit status. std::lock_guard<std::mutex> guard(m_exit_status_mutex); - telemetry::ScopedDispatcher<telemetry::ProcessExitInfo> helper; - - // Find the executable-module's UUID, if available. - Target &target = GetTarget(); - helper.SetDebugger(&(target.GetDebugger())); - UUID module_uuid; - if (ModuleSP mod = target.GetExecutableModule()) - module_uuid = mod->GetUUID(); - - helper.DispatchNow([&](telemetry::ProcessExitInfo *info) { - info->module_uuid = module_uuid; - info->pid = m_pid; - info->is_start_entry = true; - info->exit_desc = {status, exit_string.str()}; - }); - - helper.DispatchOnExit([&](telemetry::ProcessExitInfo *info) { - info->module_uuid = module_uuid; - info->pid = m_pid; - }); Log *log(GetLog(LLDBLog::State | LLDBLog::Process)); LLDB_LOG(log, "(plugin = {0} status = {1} ({1:x8}), description=\"{2}\")", diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index c26bca546891e..bbc2110dada5b 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -24,7 +24,6 @@ #include "lldb/Core/Section.h" #include "lldb/Core/SourceManager.h" #include "lldb/Core/StructuredDataImpl.h" -#include "lldb/Core/Telemetry.h" #include "lldb/DataFormatters/FormatterSection.h" #include "lldb/Expression/DiagnosticManager.h" #include "lldb/Expression/ExpressionVariable.h" @@ -1560,30 +1559,10 @@ void Target::DidExec() { void Target::SetExecutableModule(ModuleSP &executable_sp, LoadDependentFiles load_dependent_files) { - telemetry::ScopedDispatcher<telemetry::ExecutableModuleInfo> helper( - &m_debugger); Log *log = GetLog(LLDBLog::Target); ClearModules(false); if (executable_sp) { - lldb::pid_t pid = LLDB_INVALID_PROCESS_ID; - if (ProcessSP proc = GetProcessSP()) - pid = proc->GetID(); - - helper.DispatchNow([&](telemetry::ExecutableModuleInfo *info) { - info->exec_mod = executable_sp; - info->uuid = executable_sp->GetUUID(); - info->pid = pid; - info->triple = executable_sp->GetArchitecture().GetTriple().getTriple(); - info->is_start_entry = true; - }); - - helper.DispatchOnExit([&](telemetry::ExecutableModuleInfo *info) { - info->exec_mod = executable_sp; - info->uuid = executable_sp->GetUUID(); - info->pid = pid; - }); - ElapsedTime elapsed(m_stats.GetCreateTime()); LLDB_SCOPED_TIMERF("Target::SetExecutableModule (executable = '%s')", executable_sp->GetFileSpec().GetPath().c_str()); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits