When executing a script command in HandleCommand(s) we currently print
its output twice
You can see this issue in action when adding a breakpoint command:
(lldb) b main
Breakpoint 1: where = main.out`main + 13 at main.cpp:2:3, address = 0x0000000100003fad
(lldb) break command add 1 -o "script print(\"Hey!\")"
(lldb) r
Process 76041 launched: '/tmp/main.out' (x86_64)
Hey!
(lldb) script print("Hey!")
Hey!
Process 76041 stopped
The issue is caused by HandleCommands using a temporary
CommandReturnObject and one of the commands (`script` in this case)
setting an immediate output stream. This causes the result to be printed
twice: once directly to the immediate output stream and once when
printing the result of HandleCommands.
This patch fixes the issue by introducing a new option to suppress
immediate output for temporary CommandReturnObjects.
Differential revision: https://reviews.llvm.org/D103349
12 lines
452 B
Plaintext
12 lines
452 B
Plaintext
# REQUIRES: lua
|
|
# RUN: mkdir -p %t
|
|
# RUN: echo "int main() { return 0; }" | %clang_host -x c - -o %t/foo
|
|
# RUN: echo "int main() { return 0; }" | %clang_host -x c - -o %t/bar
|
|
# RUN: %lldb --script-language lua -o "file %t/bar" -o "file %t/foo" -s %S/Inputs/nested_sessions.in -s %S/Inputs/nested_sessions_2.in 2>&1 | FileCheck %s
|
|
# CHECK: script
|
|
# CHECK-NEXT: foo foo
|
|
# CHECK-NEXT: foo bar
|
|
# CHECK-NEXT: foo bar
|
|
# CHECK: script
|
|
# CHECK-NEXT: bar bar
|