[Lldb-commits] [lldb] [lldb] Add a progress event for executing an expression (PR #119757)

via lldb-commits lldb-commits at lists.llvm.org
Thu Dec 12 12:56:50 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: Adrian Prantl (adrian-prantl)

<details>
<summary>Changes</summary>

Expressions can take arbitrary amounts of time to run, so IDEs might want to be informed about the fact that an expression is currently being executed.

rdar://141253078

---
Full diff: https://github.com/llvm/llvm-project/pull/119757.diff


2 Files Affected:

- (modified) lldb/source/Expression/UserExpression.cpp (+9) 
- (added) lldb/test/Shell/Expr/TestExecProgress.test (+6) 


``````````diff
diff --git a/lldb/source/Expression/UserExpression.cpp b/lldb/source/Expression/UserExpression.cpp
index f1f69ae1c89b85..aa0516c43d139b 100644
--- a/lldb/source/Expression/UserExpression.cpp
+++ b/lldb/source/Expression/UserExpression.cpp
@@ -14,6 +14,7 @@
 #include <string>
 
 #include "lldb/Core/Module.h"
+#include "lldb/Core/Progress.h"
 #include "lldb/Expression/DiagnosticManager.h"
 #include "lldb/Expression/ExpressionVariable.h"
 #include "lldb/Expression/IRExecutionUnit.h"
@@ -424,6 +425,14 @@ UserExpression::Execute(DiagnosticManager &diagnostic_manager,
                         const EvaluateExpressionOptions &options,
                         lldb::UserExpressionSP &shared_ptr_to_me,
                         lldb::ExpressionVariableSP &result_var) {
+  Debugger *debugger =
+      exe_ctx.GetTargetPtr() ? &exe_ctx.GetTargetPtr()->GetDebugger() : nullptr;
+  Progress progress("Running expression",
+                    m_options.IsForUtilityExpr()
+                        ? "(LLDB utility)"
+                        : m_expr_text.substr(0, 12) + "...",
+                    {}, debugger);
+
   lldb::ExpressionResults expr_result = DoExecute(
       diagnostic_manager, exe_ctx, options, shared_ptr_to_me, result_var);
   Target *target = exe_ctx.GetTargetPtr();
diff --git a/lldb/test/Shell/Expr/TestExecProgress.test b/lldb/test/Shell/Expr/TestExecProgress.test
new file mode 100644
index 00000000000000..93a8469f18ce06
--- /dev/null
+++ b/lldb/test/Shell/Expr/TestExecProgress.test
@@ -0,0 +1,6 @@
+# RUN: %lldb -s %s  | FileCheck %s
+log enable lldb event
+expr 1
+quit
+
+# CHECK: {{title = "Running expression", details = "1}}

``````````

</details>


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


More information about the lldb-commits mailing list