llvm-project/lldb
Pedro Tammela d853bd7a4e [lldb/Lua] add support for multiline scripted breakpoints
1 - Partial Statements

The interpreter loop runs every line it receives, so partial
Lua statements are not being handled properly. This is a problem for
multiline breakpoint scripts since the interpreter loop, for this
particular case, is just an abstraction to a partially parsed function
body declaration.

This patch addresses this issue and as a side effect improves the
general Lua interpreter loop as well. It's now possible to write partial
statements in the 'script' command.

Example:
   (lldb) script
   >>>   do
   ..>   local a = 123
   ..>   print(a)
   ..>   end
   123

The technique implemented is the same as the one employed by Lua's own REPL implementation.
Partial statements always errors out with the '<eof>' tag in the error
message.

2 - CheckSyntax in Lua.h

In order to support (1), we need an API for just checking the syntax of string buffers.

3 - Multiline scripted breakpoints

Finally, with all the base features implemented this feature is
straightforward. The interpreter loop behaves exactly the same, the
difference is that it will aggregate all Lua statements into the body of
the breakpoint function. An explicit 'quit' statement is needed to exit the
interpreter loop.

Example:
   (lldb) breakpoint command add -s lua
   Enter your Lua command(s). Type 'quit' to end.
   The commands are compiled as the body of the following Lua function
   function (frame, bp_loc, ...) end
   ..> print(456)
   ..> a = 123
   ..> quit

Differential Revision: https://reviews.llvm.org/D93481
2021-01-07 00:31:36 +00:00
..
bindings [lldb] Add SBType::GetEnumerationIntegerType method 2020-12-22 10:08:22 -08:00
cmake Fix "Unknown arguments specified" to if in lldb 2020-10-21 07:24:53 -07:00
docs Remove Python2 fallback and only advertise Python3 in the doc 2020-12-17 15:40:16 +01:00
examples [lldb] Remove LLDB session dir and just store test traces in the respective test build directory 2020-12-04 11:43:10 +01:00
include/lldb [lldb] Ad os_signpost support to lldb_private::Timer 2021-01-06 15:16:09 -08:00
packages/Python [lldb] Fix logging in lldb-server tests 2020-12-29 08:33:12 +01:00
resources
scripts [lldb][AArch64/Linux] Show memory tagged memory regions 2020-11-20 11:21:59 +00:00
source [lldb/Lua] add support for multiline scripted breakpoints 2021-01-07 00:31:36 +00:00
test [lldb/Lua] add support for multiline scripted breakpoints 2021-01-07 00:31:36 +00:00
third_party/Python/module Revert "[lldb] temporary commit to see why a test is failing only on lldb-aarch64-ubuntu" 2020-08-05 11:55:02 +02:00
tools [lldb] Surpress "ingoring result" warning in reproducer_handler 2020-12-27 13:58:05 +01:00
unittests [lldb] [unittests] Filter FreeBSD through CMake rather than #ifdef 2020-12-17 13:55:42 +01:00
utils [lldb] Remove LLDB session dir and just store test traces in the respective test build directory 2020-12-04 11:43:10 +01:00
.clang-format
.clang-tidy [lldb] Add .clang-tidy with customization to disable readability-identifier-naming 2020-03-09 12:50:28 -07:00
.gitignore
CMakeLists.txt [lldb] Enable cmake policy CMP0077 for option() 2020-10-17 00:16:24 -07:00
CODE_OWNERS.txt
LICENSE.TXT
use_lldb_suite_root.py