[Lldb-commits] [lldb] [lldb] Dump build configuration with `version -v` (PR #170772)

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Fri Dec 5 02:11:07 PST 2025


================
@@ -8,21 +8,71 @@
 
 #include "CommandObjectVersion.h"
 
+#include "lldb/Core/Debugger.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Version/Version.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-// CommandObjectVersion
+#define LLDB_OPTIONS_version
+#include "CommandOptions.inc"
+
+llvm::ArrayRef<OptionDefinition>
+CommandObjectVersion::CommandOptions::GetDefinitions() {
+  return llvm::ArrayRef(g_version_options);
+}
 
 CommandObjectVersion::CommandObjectVersion(CommandInterpreter &interpreter)
     : CommandObjectParsed(interpreter, "version",
                           "Show the LLDB debugger version.", "version") {}
 
 CommandObjectVersion::~CommandObjectVersion() = default;
 
+// Dump the array values on a single line.
+static void dump(const StructuredData::Array &array, Stream &s) {
+  s << '[';
+
+  bool add_separator = false;
+  array.ForEach([&](StructuredData::Object *object) -> bool {
+    if (add_separator)
+      s << ", ";
+    s << object->GetStringValue();
+    add_separator = true;
+    return true;
+  });
+
+  s << ']';
+}
+
+// The default dump output is too verbose.
+static void dump(const StructuredData::Dictionary &config, Stream &s) {
+  config.ForEach(
+      [&](llvm::StringRef key, StructuredData::Object *object) -> bool {
+        assert(object);
+
+        StructuredData::Dictionary *value_dict = object->GetAsDictionary();
+        assert(value_dict);
+
+        StructuredData::ObjectSP value_sp = value_dict->GetValueForKey("value");
+        assert(value_sp);
+
+        s << "  " << key << ": ";
+        if (StructuredData::Boolean *boolean = value_sp->GetAsBoolean())
+          s << (boolean ? "yes" : "no");
----------------
DavidSpickett wrote:

This was going to be my first question, but I see now that we are going to print even for entries that are "no". Which I think is the best approach, it doesn't leave anything ambiguous.

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


More information about the lldb-commits mailing list