[Lldb-commits] [lldb] 00ffd8b - [lldb] Fix error : unknown error while starting lldb's C/C++ repl (#153560)
via lldb-commits
lldb-commits at lists.llvm.org
Mon Aug 18 21:21:24 PDT 2025
Author: Anutosh Bhat
Date: 2025-08-19T09:51:20+05:30
New Revision: 00ffd8b8aa4e8cd3a2fee654d55995918886e874
URL: https://github.com/llvm/llvm-project/commit/00ffd8b8aa4e8cd3a2fee654d55995918886e874
DIFF: https://github.com/llvm/llvm-project/commit/00ffd8b8aa4e8cd3a2fee654d55995918886e874.diff
LOG: [lldb] Fix error : unknown error while starting lldb's C/C++ repl (#153560)
Fixes https://github.com/llvm/llvm-project/issues/153157
The proposed solution has been discussed here
(https://github.com/llvm/llvm-project/issues/153157#issue-3313379242)
This is what we would be seeing now
```
base) anutosh491 at Anutoshs-MacBook-Air bin % ./lldb /Users/anutosh491/work/xeus-cpp/a.out
(lldb) target create "/Users/anutosh491/work/xeus-cpp/a.out"
Current executable set to '/Users/anutosh491/work/xeus-cpp/a.out' (arm64).
(lldb) b main
Breakpoint 1: where = a.out`main, address = 0x0000000100003f90
(lldb) r
Process 71227 launched: '/Users/anutosh491/work/xeus-cpp/a.out' (arm64)
Process 71227 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100003f90 a.out`main
a.out`main:
-> 0x100003f90 <+0>: sub sp, sp, #0x10
0x100003f94 <+4>: str wzr, [sp, #0xc]
0x100003f98 <+8>: str w0, [sp, #0x8]
0x100003f9c <+12>: str x1, [sp]
(lldb) expression --repl -l c --
1> 1 + 1
(int) $0 = 2
2> 2 + 2
(int) $1 = 4
```
```
base) anutosh491 at Anutoshs-MacBook-Air bin % ./lldb /Users/anutosh491/work/xeus-cpp/a.out
(lldb) target create "/Users/anutosh491/work/xeus-cpp/a.out"
Current executable set to '/Users/anutosh491/work/xeus-cpp/a.out' (arm64).
(lldb) b main
Breakpoint 1: where = a.out`main, address = 0x0000000100003f90
(lldb) r
Process 71355 launched: '/Users/anutosh491/work/xeus-cpp/a.out' (arm64)
Process 71355 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100003f90 a.out`main
a.out`main:
-> 0x100003f90 <+0>: sub sp, sp, #0x10
0x100003f94 <+4>: str wzr, [sp, #0xc]
0x100003f98 <+8>: str w0, [sp, #0x8]
0x100003f9c <+12>: str x1, [sp]
(lldb) expression --repl -l c -- 3 + 3
Warning: trailing input is ignored in --repl mode
1> 1 + 1
(int) $0 = 2
```
Added:
Modified:
lldb/source/Commands/CommandObjectExpression.cpp
lldb/test/API/repl/clang/TestClangREPL.py
Removed:
################################################################################
diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp
index 197bffe9c982f..41bc8abf4897f 100644
--- a/lldb/source/Commands/CommandObjectExpression.cpp
+++ b/lldb/source/Commands/CommandObjectExpression.cpp
@@ -640,9 +640,15 @@ void CommandObjectExpression::DoExecute(llvm::StringRef command,
repl_sp->SetValueObjectDisplayOptions(m_varobj_options);
}
+ if (!expr.empty()) {
+ result.GetOutputStream().Printf(
+ "Warning: trailing input is ignored in --repl mode\n");
+ }
+
IOHandlerSP io_handler_sp(repl_sp->GetIOHandler());
io_handler_sp->SetIsDone(false);
debugger.RunIOHandlerAsync(io_handler_sp);
+ return;
} else {
repl_error = Status::FromErrorStringWithFormat(
"Couldn't create a REPL for %s",
diff --git a/lldb/test/API/repl/clang/TestClangREPL.py b/lldb/test/API/repl/clang/TestClangREPL.py
index 97d91d1b8f7a5..3152018865b1e 100644
--- a/lldb/test/API/repl/clang/TestClangREPL.py
+++ b/lldb/test/API/repl/clang/TestClangREPL.py
@@ -56,6 +56,16 @@ def test_basic_completion(self):
self.quit()
+ # Re-enter the REPL with trailing input to trigger warning.
+ self.child.send("expression --repl -l c -- 3 + 3\n")
+ self.child.expect_exact("Warning: trailing input is ignored in --repl mode\n")
+ self.child.expect_exact("1>")
+
+ # Evaluate another expression after warning.
+ self.expect_repl("4 + 4", substrs=["(int) $3 = 8"])
+
+ self.quit()
+
# PExpect uses many timeouts internally and doesn't play well
# under ASAN on a loaded machine..
@skipIfAsan
More information about the lldb-commits
mailing list