[all-commits] [llvm/llvm-project] 1a216f: [lldb] Don't print script output twice in HandleCo...

Jonas Devlieghere via All-commits all-commits at lists.llvm.org
Tue Jun 8 13:57:57 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 1a216fb15a188f9ac7de6d79267b3cfb2946f792
      https://github.com/llvm/llvm-project/commit/1a216fb15a188f9ac7de6d79267b3cfb2946f792
  Author: Jonas Devlieghere <jonas at devlieghere.com>
  Date:   2021-06-08 (Tue, 08 Jun 2021)

  Changed paths:
    M lldb/include/lldb/Interpreter/CommandReturnObject.h
    A lldb/lldb/test/Shell/Breakpoint/breakpoint-command.test
    M lldb/source/Interpreter/CommandInterpreter.cpp
    M lldb/source/Interpreter/CommandReturnObject.cpp
    A lldb/test/Shell/Breakpoint/breakpoint-command.test
    M lldb/test/Shell/ScriptInterpreter/Lua/nested_sessions.test

  Log Message:
  -----------
  [lldb] Don't print script output twice in HandleCommand

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




More information about the All-commits mailing list