https://github.com/qxy11 updated 
https://github.com/llvm/llvm-project/pull/145436

>From 1323a237d4cbe554e7f373316a041ca172168afe Mon Sep 17 00:00:00 2001
From: Janet Yang <qx...@meta.com>
Date: Mon, 23 Jun 2025 14:25:12 -0700
Subject: [PATCH 1/4] Disable "transcript" in "statistics dump" by default

---
 lldb/include/lldb/Target/Statistics.h         |  2 +-
 .../commands/statistics/basic/TestStats.py    | 37 ++++++++++++++++++-
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/lldb/include/lldb/Target/Statistics.h 
b/lldb/include/lldb/Target/Statistics.h
index 42f03798c219e..676f3a4a118be 100644
--- a/lldb/include/lldb/Target/Statistics.h
+++ b/lldb/include/lldb/Target/Statistics.h
@@ -195,7 +195,7 @@ struct StatisticsOptions {
       return m_include_transcript.value();
     // `m_include_transcript` has no value set, so return a value based on
     // `m_summary_only`.
-    return !GetSummaryOnly();
+    return false;
   }
 
   void SetIncludePlugins(bool value) { m_include_plugins = value; }
diff --git a/lldb/test/API/commands/statistics/basic/TestStats.py 
b/lldb/test/API/commands/statistics/basic/TestStats.py
index 5281bde4c6479..890ceb1f5fd57 100644
--- a/lldb/test/API/commands/statistics/basic/TestStats.py
+++ b/lldb/test/API/commands/statistics/basic/TestStats.py
@@ -892,7 +892,7 @@ def get_test_cases_for_sections_existence(self):
                     "targets.frameVariable": True,
                     "targets.totalSharedLibraryEventHitCount": True,
                     "modules": True,
-                    "transcript": True,
+                    "transcript": False,
                 },
             },
             {  # Summary mode
@@ -979,6 +979,24 @@ def get_test_cases_for_sections_existence(self):
                     "transcript": False,
                 },
             },
+            {  # Default mode without modules and with transcript
+                "command_options": " --modules=false --transcript=true",
+                "api_options": {
+                    "SetIncludeModules": False,
+                    "SetIncludeTranscript": True,
+                },
+                "expect": {
+                    "commands": True,
+                    "targets": True,
+                    "targets.moduleIdentifiers": False,
+                    "targets.breakpoints": True,
+                    "targets.expressionEvaluation": True,
+                    "targets.frameVariable": True,
+                    "targets.totalSharedLibraryEventHitCount": True,
+                    "modules": False,
+                    "transcript": True,
+                },
+            },
             {  # Default mode without modules
                 "command_options": " --modules=false",
                 "api_options": {
@@ -993,6 +1011,23 @@ def get_test_cases_for_sections_existence(self):
                     "targets.frameVariable": True,
                     "targets.totalSharedLibraryEventHitCount": True,
                     "modules": False,
+                    "transcript": False,
+                },
+            },
+            {  # Default mode with transcript
+                "command_options": " --transcript=true",
+                "api_options": {
+                    "SetIncludeTranscript": True,
+                },
+                "expect": {
+                    "commands": True,
+                    "targets": True,
+                    "targets.moduleIdentifiers": True,
+                    "targets.breakpoints": True,
+                    "targets.expressionEvaluation": True,
+                    "targets.frameVariable": True,
+                    "targets.totalSharedLibraryEventHitCount": True,
+                    "modules": True,
                     "transcript": True,
                 },
             },

>From e6fa7b17ce96bf520598d752ea00c5c9cdfb41e5 Mon Sep 17 00:00:00 2001
From: Janet Yang <qx...@meta.com>
Date: Mon, 23 Jun 2025 15:46:42 -0700
Subject: [PATCH 2/4] Update some comments

---
 lldb/include/lldb/API/SBStatisticsOptions.h |  3 +--
 lldb/include/lldb/Target/Statistics.h       |  3 +--
 lldb/source/Commands/Options.td             | 16 +++++++++-------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/lldb/include/lldb/API/SBStatisticsOptions.h 
b/lldb/include/lldb/API/SBStatisticsOptions.h
index 74bea03eff9c9..bfff9dc926432 100644
--- a/lldb/include/lldb/API/SBStatisticsOptions.h
+++ b/lldb/include/lldb/API/SBStatisticsOptions.h
@@ -57,8 +57,7 @@ class LLDB_API SBStatisticsOptions {
   /// a JSON array with all commands the user and/or scripts executed during a
   /// debug session.
   ///
-  /// Defaults to true, unless the `SummaryOnly` mode is enabled, in which case
-  /// this is turned off unless specified.
+  /// Defaults to false.
   void SetIncludeTranscript(bool b);
   bool GetIncludeTranscript() const;
 
diff --git a/lldb/include/lldb/Target/Statistics.h 
b/lldb/include/lldb/Target/Statistics.h
index 676f3a4a118be..68194cf216a1a 100644
--- a/lldb/include/lldb/Target/Statistics.h
+++ b/lldb/include/lldb/Target/Statistics.h
@@ -193,8 +193,7 @@ struct StatisticsOptions {
   bool GetIncludeTranscript() const {
     if (m_include_transcript.has_value())
       return m_include_transcript.value();
-    // `m_include_transcript` has no value set, so return a value based on
-    // `m_summary_only`.
+    // Default to false in both default mode and summary mode.
     return false;
   }
 
diff --git a/lldb/source/Commands/Options.td b/lldb/source/Commands/Options.td
index 75bdffe16c52e..5327647d65cc4 100644
--- a/lldb/source/Commands/Options.td
+++ b/lldb/source/Commands/Options.td
@@ -1482,13 +1482,15 @@ let Command = "statistics dump" in {
     "this is turned off unless specified. "
     "In default mode, if both '--targets' and '--modules' are 'true', a list "
     "of module identifiers will be added to the 'targets' section.">;
-  def statistics_dump_transcript: Option<"transcript", "t">, Group<1>,
-    Arg<"Boolean">,
-    Desc<"If the setting interpreter.save-transcript is enabled and this "
-    "option is 'true', include a JSON array with all commands the user and/or "
-    "scripts executed during a debug session. "
-    "Defaults to true, unless the '--summary' mode is enabled, in which case "
-    "this is turned off unless specified.">;
+  def statistics_dump_transcript
+      : Option<"transcript", "t">,
+        Group<1>,
+        Arg<"Boolean">,
+        Desc<"If the setting interpreter.save-transcript is enabled and this "
+             "option is 'true', include a JSON array with all commands the "
+             "user and/or "
+             "scripts executed during a debug session. "
+             "Defaults to false. ">;
   def statistics_dump_plugins
       : Option<"plugins", "p">,
         Group<1>,

>From f79de38a3d129dfc160c6cc989ebe8e13e89eac0 Mon Sep 17 00:00:00 2001
From: Janet Yang <qx...@meta.com>
Date: Tue, 24 Jun 2025 13:32:31 -0700
Subject: [PATCH 3/4] Add transcript warning and refactor
 GetIncludeTranscript()

Summary:
Add warning to 'statistics dump --transcript=true' when
interpreter.save-transcript is disabled, helping users understand
why transcript data is empty.

Also refactor StatisticsOptions::GetIncludeTranscript() to use
value_or(false) instead of the verbose has_value()/value() pattern
to address PR comments.
---
 lldb/include/lldb/Target/Statistics.h       |  5 +----
 lldb/source/Commands/CommandObjectStats.cpp | 14 ++++++++++++--
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/lldb/include/lldb/Target/Statistics.h 
b/lldb/include/lldb/Target/Statistics.h
index 68194cf216a1a..55dff8861a9ab 100644
--- a/lldb/include/lldb/Target/Statistics.h
+++ b/lldb/include/lldb/Target/Statistics.h
@@ -191,10 +191,7 @@ struct StatisticsOptions {
 
   void SetIncludeTranscript(bool value) { m_include_transcript = value; }
   bool GetIncludeTranscript() const {
-    if (m_include_transcript.has_value())
-      return m_include_transcript.value();
-    // Default to false in both default mode and summary mode.
-    return false;
+    return m_include_transcript.value_or(false);
   }
 
   void SetIncludePlugins(bool value) { m_include_plugins = value; }
diff --git a/lldb/source/Commands/CommandObjectStats.cpp 
b/lldb/source/Commands/CommandObjectStats.cpp
index b77c44bdf5d09..08283ef9d1699 100644
--- a/lldb/source/Commands/CommandObjectStats.cpp
+++ b/lldb/source/Commands/CommandObjectStats.cpp
@@ -9,6 +9,7 @@
 #include "CommandObjectStats.h"
 #include "lldb/Core/Debugger.h"
 #include "lldb/Host/OptionParser.h"
+#include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/CommandOptionArgumentTable.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Interpreter/OptionArgParser.h"
@@ -147,9 +148,18 @@ class CommandObjectStatsDump : public CommandObjectParsed {
     if (!m_options.m_all_targets)
       target = m_exe_ctx.GetTargetPtr();
 
+    // Check if transcript is requested but transcript saving is disabled
+    const StatisticsOptions &stats_options = m_options.GetStatisticsOptions();
+    if (stats_options.GetIncludeTranscript() &&
+        !GetDebugger().GetCommandInterpreter().GetSaveTranscript()) {
+      result.AppendWarning(
+          "transcript requested but none was saved. Enable with "
+          "'settings set interpreter.save-transcript true'");
+    }
+
     result.AppendMessageWithFormatv(
-        "{0:2}", DebuggerStats::ReportStatistics(
-                     GetDebugger(), target, m_options.GetStatisticsOptions()));
+        "{0:2}",
+        DebuggerStats::ReportStatistics(GetDebugger(), target, stats_options));
     result.SetStatus(eReturnStatusSuccessFinishResult);
   }
 

>From 4bd80891228b24f92243782ae7644ff1f49b55c3 Mon Sep 17 00:00:00 2001
From: Janet Yang <qx...@meta.com>
Date: Wed, 25 Jun 2025 11:44:00 -0700
Subject: [PATCH 4/4] Add a unit test around warning msg

---
 .../commands/statistics/basic/TestStats.py    | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/lldb/test/API/commands/statistics/basic/TestStats.py 
b/lldb/test/API/commands/statistics/basic/TestStats.py
index 890ceb1f5fd57..cd3f7cfe02176 100644
--- a/lldb/test/API/commands/statistics/basic/TestStats.py
+++ b/lldb/test/API/commands/statistics/basic/TestStats.py
@@ -845,6 +845,30 @@ def test_transcript_happy_path(self):
         # The second "statistics dump" in the transcript should have no output
         self.assertNotIn("output", transcript[2])
 
+    def test_transcript_warning_when_disabled(self):
+        """
+        Test that "statistics dump --transcript=true" shows a warning when
+        transcript saving is disabled.
+        """
+        self.build()
+        exe = self.getBuildArtifact("a.out")
+        target = self.createTestTarget(file_path=exe)
+        
+        # Ensure transcript saving is disabled (this is the default)
+        self.runCmd("settings set interpreter.save-transcript false")
+        
+        # Request transcript in statistics dump and check for warning
+        interpreter = self.dbg.GetCommandInterpreter()
+        res = lldb.SBCommandReturnObject()
+        interpreter.HandleCommand("statistics dump --transcript=true", res)
+        self.assertTrue(res.Succeeded())
+        # We should warn about transcript being requested but not saved
+        self.assertIn(
+            "transcript requested but none was saved. Enable with "
+            "'settings set interpreter.save-transcript true'",
+            res.GetError()
+        )
+
     def verify_stats(self, stats, expectation, options):
         for field_name in expectation:
             idx = field_name.find(".")

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to