Fix script -lpython to handle control flow in one-line commands.
The fix is to append a newline to the source being evaluated.
Without this patch, the following commands print no output, no errors.
(lldb) script if "foo" in lldb.frame.name: print(lldb.thread) (lldb) script for f in lldb.thread: print(f.name)
The issue is with code.InteractiveConsole.runsource(). A trailing newline is
needed for these expressions to be evaluated. I don't know why this is, the
docs don't mention anything.
From a python repl, the following samples show that a terminal newline allows
statements containing flow control to fully execute.
>>> import code >>> repl = code.InteractiveConsole() >>> repl.runsource("if True: print(1)") True >>> repl.runsource("if True: print(1)\n") 1 False
Notes:
From an interactive python repl, the output is not printed immediately. The
user is required to enter a blank line following the first.
>>> if True: print(1) ... 1
However, python -c 'if True: print(1)' works without needing a newline.