summaryrefslogtreecommitdiff
path: root/lldb/source/Target/Target.cpp
diff options
context:
space:
mode:
authorVy Nguyen <vyng@google.com>2025-03-18 22:54:08 -0400
committerGitHub <noreply@github.com>2025-03-18 22:54:08 -0400
commit04e39ce3fddaaec41d9c7babcca55133d7e49969 (patch)
tree014befa65b8957a9d1c251e83157cfd5ea8c8393 /lldb/source/Target/Target.cpp
parenta274ea1e3a3e1a824e876732074e4638e197b076 (diff)
[LLDB][Telemetry]Define TargetInfo for collecting data about a target (#127834)
Co-authored-by: Pavel Labath <pavel@labath.sk>
Diffstat (limited to 'lldb/source/Target/Target.cpp')
-rw-r--r--lldb/source/Target/Target.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index bbc2110dada5..c26bca546891 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -24,6 +24,7 @@
#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"
@@ -1559,10 +1560,30 @@ 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());