[Lldb-commits] [lldb] [lldb] Add a progress event for executing an expression (PR #119757)
Adrian Prantl via lldb-commits
lldb-commits at lists.llvm.org
Thu Dec 12 12:56:17 PST 2024
https://github.com/adrian-prantl created https://github.com/llvm/llvm-project/pull/119757
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
>From 596555941e1596132fcabe84ad80cebfbc02f34f Mon Sep 17 00:00:00 2001
From: Adrian Prantl <aprantl at apple.com>
Date: Thu, 12 Dec 2024 12:53:13 -0800
Subject: [PATCH] [lldb] Add a progress event for executing an expression
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
---
lldb/source/Expression/UserExpression.cpp | 9 +++++++++
lldb/test/Shell/Expr/TestExecProgress.test | 6 ++++++
2 files changed, 15 insertions(+)
create mode 100644 lldb/test/Shell/Expr/TestExecProgress.test
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}}
More information about the lldb-commits
mailing list