[Lldb-commits] [lldb] [LLDB][Telemetry]Define DebuggerTelemetryInfo and related methods (PR #127696)

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Feb 28 03:54:05 PST 2025


================
@@ -761,7 +765,14 @@ void Debugger::InstanceInitialize() {
 
 DebuggerSP Debugger::CreateInstance(lldb::LogOutputCallback log_callback,
                                     void *baton) {
+  lldb_private::telemetry::ScopedDispatcher<
+      lldb_private::telemetry::DebuggerInfo>
+      helper([](lldb_private::telemetry::DebuggerInfo *entry) {
+        entry->lldb_version = lldb_private::GetVersion();
+      });
   DebuggerSP debugger_sp(new Debugger(log_callback, baton));
+  helper.SetDebugger(debugger_sp.get());
----------------
labath wrote:

This is definitely better, but lambdas tend to add some boilerplate of their own. They may be useful in some cases (if you need to set some field at the very end) but I think that in many cases (this one included) we could just set the field directly, so I want to float this idea: I think this would be shorter if we had the dispatcher object expose the telemetry entry it is managing directly:
```suggestion
  telemetry::ScopedDispatcher<telemetry::DebuggerInfo> helper;
  DebuggerSP debugger_sp(new Debugger(log_callback, baton));
  if (telemetry::DebuggerInfo *info = helper.GetEntry()) {// returns NULL if telemetry is disabled
    info->debugger = debugger_sp.get();
    info->lldb_version = lldb_private::GetVersion();
  }
```

(and if we do need a callback, I don't see a reason why this couldn't coexist with that)

Any thoughts @JDevlieghere ?

https://github.com/llvm/llvm-project/pull/127696


More information about the lldb-commits mailing list