From 3d8086f08feaa4ae39a16cdc8931e5d5ec725730 Mon Sep 17 00:00:00 2001
From: Timur Safin <tsafin@tarantool.org>
Date: Tue, 8 Feb 2022 01:44:15 +0300
Subject: [PATCH] debugger: added luadebug.lua

Use 3rd-party module https://github.com/slembcke/debugger.lua
as a basis for our debugger CLI shell, rename it to
luadebug.lua to avoid collision with vscode and JetBrains
debugger helper scripts.

NO_DOC=yet
NO_CHANGELOG=yet
NO_TEST=yet
---
 src/CMakeLists.txt                    |   5 +-
 src/lua/init.c                        |   4 +-
 third_party/lua/README-luadebug.md    | 132 +++++
 third_party/lua/luadebug.lua          | 678 ++++++++++++++++++++++++++
 third_party/lua/luadebug.png          | Bin 0 -> 66615 bytes
 third_party/lua/luadebug_tutorial.lua | 279 +++++++++++
 6 files changed, 1096 insertions(+), 2 deletions(-)
 create mode 100644 third_party/lua/README-luadebug.md
 create mode 100644 third_party/lua/luadebug.lua
 create mode 100644 third_party/lua/luadebug.png
 create mode 100644 third_party/lua/luadebug_tutorial.lua

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 755a94fa29..4db5e1926d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -58,7 +58,6 @@ lua_source(lua_sources lua/env.lua env_lua)
 lua_source(lua_sources lua/pwd.lua pwd_lua)
 lua_source(lua_sources lua/trigger.lua trigger_lua)
 lua_source(lua_sources lua/table.lua table_lua)
-lua_source(lua_sources ../third_party/luafun/fun.lua fun_lua)
 lua_source(lua_sources lua/httpc.lua httpc_lua)
 lua_source(lua_sources lua/iconv.lua iconv_lua)
 lua_source(lua_sources lua/swim.lua swim_lua)
@@ -66,6 +65,10 @@ lua_source(lua_sources lua/datetime.lua datetime_lua)
 lua_source(lua_sources lua/timezones.lua timezones_lua)
 lua_source(lua_sources lua/print.lua print_lua)
 
+# 3rd party lua sources
+lua_source(lua_sources ../third_party/luafun/fun.lua fun_lua)
+lua_source(lua_sources ../third_party/lua/luadebug.lua luadebug_lua)
+
 # LuaJIT jit.* library
 lua_source(lua_sources ${LUAJIT_SOURCE_ROOT}/src/jit/bc.lua jit_bc_lua)
 lua_source(lua_sources ${LUAJIT_SOURCE_ROOT}/src/jit/bcsave.lua jit_bcsave_lua)
diff --git a/src/lua/init.c b/src/lua/init.c
index 2c39fc0cf1..b6ea368eca 100644
--- a/src/lua/init.c
+++ b/src/lua/init.c
@@ -155,7 +155,8 @@ extern char strict_lua[],
 	sysprof_lua[],
 	datetime_lua[],
 	timezones_lua[],
-	print_lua[]
+	print_lua[],
+	luadebug_lua[]
 #if defined(EMBED_LUAROCKS)
 	, luarocks_core_hardcoded_lua[],
 	luarocks_admin_cache_lua[],
@@ -310,6 +311,7 @@ static const char *lua_modules[] = {
 	"timezones", timezones_lua,
 	"datetime", datetime_lua,
 	"internal.print", print_lua,
+	"luadebug", luadebug_lua,
 	NULL
 };
 
diff --git a/third_party/lua/README-luadebug.md b/third_party/lua/README-luadebug.md
new file mode 100644
index 0000000000..6704238375
--- /dev/null
+++ b/third_party/lua/README-luadebug.md
@@ -0,0 +1,132 @@
+debugger.lua
+=
+
+A simple, embedabble debugger for Lua 5.x, and LuaJIT 2.x.
+
+
+
+![ExampleLog](luadebug.png)
+
+debugger.lua is a simple, single file, pure Lua debugger that is easy to integrate with any project. The lua-users wiki lists a [number of debuggers](http://lua-users.org/wiki/DebuggingLuaCode). clidebugger was closest to what I was looking for, but I ran into several compatibility issues, and the rest are pretty big libraries with a whole lot of dependencies. I just wanted something simple to integrate that would work through stdin/stdout. I also decided that it sounded fun to try and make my own!
+
+Features
+-
+
+- Trivial to "install". Can be integrated as a single .lua _or_ .c file.
+- The regular assortment of commands you'd expect from a debugger: continue, step, next, finish, print/eval expression, move up/down the stack, backtrace, print locals, inline help.
+- Evaluate expressions, call functions interactively, and get/set variables.
+- Pretty printed output so you see `{1 = 3, "a" = 5}` instead of `table: 0x10010cfa0`
+- Speed! The debugger hooks are only set during the step/next/finish commands.
+- Conditional, assert-style breakpoints.
+- Colored output and line editing support when possible.
+- Drop in replacements for Lua's `assert()`, `error()`, and `pcall()` functions that trigger the debugger.
+- When using the C API, `dbg_call()` works as a drop-in replacement for `lua_pcall()`.
+- IO can easily be remapped to a socket or window by overwriting the `dbg.write()` and `dbg.read()` functions.
+- Permissive MIT license.
+
+Easy to use from C too!
+-
+
+debugger.lua can be easily integrated into an embedded project with just a .c and .h file. First though, you'll need to run `lua embed/debugger.c.lua`. This generates embed/debugger.c by inserting the lua code into a template .c file.
+
+```c
+int main(int argc, char **argv){
+	lua_State *lua = luaL_newstate();
+	luaL_openlibs(lua);
+
+	// The 2nd parameter is the module name. (Ex: require("debugger") )
+	// The 3rd parameter is the name of a global variable to bind it to, or NULL if you don't want one.
+	// The last two are lua_CFunctions for overriding the I/O functions.
+	// A NULL I/O function  means to use standard input or output respectively.
+	dbg_setup(lua, "debugger", "dbg", NULL, NULL);
+
+	// Load some lua code and prepare to call the MyBuggyFunction() defined below...
+
+	// dbg_pcall() is called exactly like lua_pcall().
+	// Although note that using a custom message handler disables the debugger.
+	if(dbg_pcall(lua, nargs, nresults, 0)){
+		fprintf(stderr, "Lua Error: %s\n", lua_tostring(lua, -1));
+	}
+}
+```
+
+Now in your Lua code you can just use the global variable or `require` the module name you passed to the `dbg_setup()` call.
+
+Debugger Commands:
+-
+
+If you have used other CLI debuggers, debugger.lua shouldn't be surprising. I didn't make a fancy parser, so the commands are just single letters. Since the debugger is pretty simple there are only a small handful of commands anwyay.
+
+	[return] - re-run last command
+	c(ontinue) - contiue execution
+	s(tep) - step forward by one line (into functions)
+	n(ext) - step forward by one line (skipping over functions)
+	p(rint) [expression] - execute the expression and print the result
+	f(inish) - step forward until exiting the current function
+	u(p) - move up the stack by one frame
+	d(own) - move down the stack by one frame
+	w(here) [line count] - print source code around the current line
+	t(race) - print the stack trace
+	l(ocals) - print the function arguments, locals and upvalues.
+	h(elp) - print this message
+	q(uit) - halt execution
+
+If you've never used a command line debugger before, start a nice warm cozy fire, run tutorial.lua, and open it up in your favorite editor so you can follow along.
+
+Debugger API
+-
+
+There are several overloadable functions you can use to customize debugger.lua.
+* `dbg.read(prompt)` - Show the prompt and block for user input. (Defaults to read from stdin)
+* `dbg.write(str)` - Write a string to the output. (Defaults to write to stdout)
+* `dbg.shorten_path(path)` - Return a shortened version of a path. (Defaults to simply return `path`)
+* `dbg.exit(err)` - Stop debugging. (Defaults to `os.exit(err)`)
+
+Using these you can customize the debugger to work in your environment. For instance, you can divert the I/O over a network socket or to a GUI window.
+
+There are also some goodies you can use to make debugging easier.
+* `dbg.writeln(format, ...)` - Basically the same as `dbg.write(string.format(format.."\n", ...))`
+* `dbg.pretty_depth = int` - Set how deep `dbg.pretty()` formats tables.
+* `dbg.pretty(obj)` - Will return a pretty print string of an object.
+* `dbg.pp(obj)` - Basically the same as `dbg.writeln(dbg.pretty(obj))`
+* `dbg.auto_where = int_or_false` - Set the where command to run automatically when the active line changes. The value is the number of context lines.
+* `dbg.error(error, [level])` - Drop in replacement for `error()` that breaks in the debugger.
+* `dbg.assert(error, [message])` - Drop in replacement for `assert()` that breaks in the debugger.
+* `dbg.call(f, ...)` - Drop in replacement for `pcall()` that breaks in the debugger.
+
+Environment Variables:
+-
+
+Want to disable ANSI color support or disable GNU readline? Set the `DBG_NOCOLOR` and/or `DBG_NOREADLINE` environment variables.
+
+Known Issues:
+-
+
+- Lua 5.1 lacks the API to access varargs. The workaround is to do something like `local args = {...}` and then use `unpack(args)` when you want to access them. In Lua 5.2+ and LuaJIT, you can simply use `...` in your expressions with the print command.
+- You can't add breakpoints to a running program or remove them. Currently the only way to set them is by explicitly calling the `dbg()` function explicitly in your code. (This is sort of by design and sort of because it's difficult/slow otherwise.)
+- Different interpreters (and versions) print out slightly different stack trace information.
+- Tail calls are handled silghtly differently in different interpreters. You may find that 1.) stepping into a function that does nothing but a tail call steps you into the tail called function. 2.) The interpreter gives you the wrong name of a tail called function (watch the line numbers). 3.) Stepping out of a tail called function also steps out of the function that performed the tail call. Mostly this is never a problem, but it is a little confusing if you don't know what is going on.
+- Coroutine support has not been tested extensively yet, and Lua vs. LuaJIT handle them differently anyway. -_-
+
+License:
+-
+
+	Copyright (c) 2021 Scott Lembcke and Howling Moon Software
+	
+	Permission is hereby granted, free of charge, to any person obtaining a copy
+	of this software and associated documentation files (the "Software"), to deal
+	in the Software without restriction, including without limitation the rights
+	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+	copies of the Software, and to permit persons to whom the Software is
+	furnished to do so, subject to the following conditions:
+	
+	The above copyright notice and this permission notice shall be included in
+	all copies or substantial portions of the Software.
+	
+	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+	SOFTWARE.
diff --git a/third_party/lua/luadebug.lua b/third_party/lua/luadebug.lua
new file mode 100644
index 0000000000..487b2c51ba
--- /dev/null
+++ b/third_party/lua/luadebug.lua
@@ -0,0 +1,678 @@
+--[[
+	Copyright (c) 2020 Scott Lembcke and Howling Moon Software
+	
+	Permission is hereby granted, free of charge, to any person obtaining a copy
+	of this software and associated documentation files (the "Software"), to deal
+	in the Software without restriction, including without limitation the rights
+	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+	copies of the Software, and to permit persons to whom the Software is
+	furnished to do so, subject to the following conditions:
+	
+	The above copyright notice and this permission notice shall be included in
+	all copies or substantial portions of the Software.
+	
+	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+	SOFTWARE.
+	
+	TODO:
+	* Print short function arguments as part of stack location.
+	* Properly handle being reentrant due to coroutines.
+]]
+
+local dbg
+
+-- Use ANSI color codes in the prompt by default.
+local COLOR_GRAY = ""
+local COLOR_RED = ""
+local COLOR_BLUE = ""
+local COLOR_YELLOW = ""
+local COLOR_RESET = ""
+local GREEN_CARET = " => "
+
+local function pretty(obj, max_depth)
+	if max_depth == nil then max_depth = dbg.pretty_depth end
+	
+	-- Returns true if a table has a __tostring metamethod.
+	local function coerceable(tbl)
+		local meta = getmetatable(tbl)
+		return (meta and meta.__tostring)
+	end
+	
+	local function recurse(obj, depth)
+		if type(obj) == "string" then
+			-- Dump the string so that escape sequences are printed.
+			return string.format("%q", obj)
+		elseif type(obj) == "table" and depth < max_depth and not coerceable(obj) then
+			local str = "{"
+			
+			for k, v in pairs(obj) do
+				local pair = pretty(k, 0).." = "..recurse(v, depth + 1)
+				str = str..(str == "{" and pair or ", "..pair)
+			end
+			
+			return str.."}"
+		else
+			-- tostring() can fail if there is an error in a __tostring metamethod.
+			local success, value = pcall(function() return tostring(obj) end)
+			return (success and value or "<!!error in __tostring metamethod!!>")
+		end
+	end
+	
+	return recurse(obj, 0)
+end
+
+-- The stack level that cmd_* functions use to access locals or info
+-- The structure of the code very carefully ensures this.
+local CMD_STACK_LEVEL = 6
+
+-- Location of the top of the stack outside of the debugger.
+-- Adjusted by some debugger entrypoints.
+local stack_top = 0
+
+-- The current stack frame index.
+-- Changed using the up/down commands
+local stack_inspect_offset = 0
+
+-- LuaJIT has an off by one bug when setting local variables.
+local LUA_JIT_SETLOCAL_WORKAROUND = 0
+
+-- Default dbg.read function
+local function dbg_read(prompt)
+	dbg.write(prompt)
+	io.flush()
+	return io.read()
+end
+
+-- Default dbg.write function
+local function dbg_write(str)
+	io.write(str)
+end
+
+local function dbg_writeln(str, ...)
+	if select("#", ...) == 0 then
+		dbg.write((str or "<NULL>").."\n")
+	else
+		dbg.write(string.format(str.."\n", ...))
+	end
+end
+
+local function format_loc(file, line) return COLOR_BLUE..file..COLOR_RESET..":"..COLOR_YELLOW..line..COLOR_RESET end
+local function format_stack_frame_info(info)
+	local filename = info.source:match("@(.*)")
+	local source = filename and dbg.shorten_path(filename) or info.short_src
+	local namewhat = (info.namewhat == "" and "chunk at" or info.namewhat)
+	local name = (info.name and "'"..COLOR_BLUE..info.name..COLOR_RESET.."'" or format_loc(source, info.linedefined))
+	return format_loc(source, info.currentline).." in "..namewhat.." "..name
+end
+
+local repl
+
+-- Return false for stack frames without source,
+-- which includes C frames, Lua bytecode, and `loadstring` functions
+local function frame_has_line(info) return info.currentline >= 0 end
+
+local function hook_factory(repl_threshold)
+	return function(offset, reason)
+		return function(event, _)
+			-- Skip events that don't have line information.
+			if not frame_has_line(debug.getinfo(2)) then return end
+			
+			-- Tail calls are specifically ignored since they also will have tail returns to balance out.
+			if event == "call" then
+				offset = offset + 1
+			elseif event == "return" and offset > repl_threshold then
+				offset = offset - 1
+			elseif event == "line" and offset <= repl_threshold then
+				repl(reason)
+			end
+		end
+	end
+end
+
+local hook_step = hook_factory(1)
+local hook_next = hook_factory(0)
+local hook_finish = hook_factory(-1)
+
+-- Create a table of all the locally accessible variables.
+-- Globals are not included when running the locals command, but are when running the print command.
+local function local_bindings(offset, include_globals)
+	local level = offset + stack_inspect_offset + CMD_STACK_LEVEL
+	local func = debug.getinfo(level).func
+	local bindings = {}
+	
+	-- Retrieve the upvalues
+	do local i = 1; while true do
+		local name, value = debug.getupvalue(func, i)
+		if not name then break end
+		bindings[name] = value
+		i = i + 1
+	end end
+	
+	-- Retrieve the locals (overwriting any upvalues)
+	do local i = 1; while true do
+		local name, value = debug.getlocal(level, i)
+		if not name then break end
+		bindings[name] = value
+		i = i + 1
+	end end
+	
+	-- Retrieve the varargs (works in Lua 5.2 and LuaJIT)
+	local varargs = {}
+	do local i = 1; while true do
+		local name, value = debug.getlocal(level, -i)
+		if not name then break end
+		varargs[i] = value
+		i = i + 1
+	end end
+	if #varargs > 0 then bindings["..."] = varargs end
+	
+	if include_globals then
+		-- In Lua 5.2, you have to get the environment table from the function's locals.
+		local env = (_VERSION <= "Lua 5.1" and getfenv(func) or bindings._ENV)
+		return setmetatable(bindings, {__index = env or _G})
+	else
+		return bindings
+	end
+end
+
+-- Used as a __newindex metamethod to modify variables in cmd_eval().
+local function mutate_bindings(_, name, value)
+	local FUNC_STACK_OFFSET = 3 -- Stack depth of this function.
+	local level = stack_inspect_offset + FUNC_STACK_OFFSET + CMD_STACK_LEVEL
+	
+	-- Set a local.
+	do local i = 1; repeat
+		local var = debug.getlocal(level, i)
+		if name == var then
+			dbg_writeln(COLOR_YELLOW.."luadebug.lua"..GREEN_CARET.."Set local variable "..COLOR_BLUE..name..COLOR_RESET)
+			return debug.setlocal(level + LUA_JIT_SETLOCAL_WORKAROUND, i, value)
+		end
+		i = i + 1
+	until var == nil end
+	
+	-- Set an upvalue.
+	local func = debug.getinfo(level).func
+	do local i = 1; repeat
+		local var = debug.getupvalue(func, i)
+		if name == var then
+			dbg_writeln(COLOR_YELLOW.."luadebug.lua"..GREEN_CARET.."Set upvalue "..COLOR_BLUE..name..COLOR_RESET)
+			return debug.setupvalue(func, i, value)
+		end
+		i = i + 1
+	until var == nil end
+	
+	-- Set a global.
+	dbg_writeln(COLOR_YELLOW.."luadebug.lua"..GREEN_CARET.."Set global variable "..COLOR_BLUE..name..COLOR_RESET)
+	_G[name] = value
+end
+
+-- Compile an expression with the given variable bindings.
+local function compile_chunk(block, env)
+	local source = "luadebug.lua REPL"
+	local chunk = nil
+	
+	if _VERSION <= "Lua 5.1" then
+		chunk = loadstring(block, source)
+		if chunk then setfenv(chunk, env) end
+	else
+		-- The Lua 5.2 way is a bit cleaner
+		chunk = load(block, source, "t", env)
+	end
+	
+	if not chunk then dbg_writeln(COLOR_RED.."Error: Could not compile block:\n"..COLOR_RESET..block) end
+	return chunk
+end
+
+local SOURCE_CACHE = {}
+
+local function where(info, context_lines)
+	local source = SOURCE_CACHE[info.source]
+	if not source then
+		source = {}
+		local filename = info.source:match("@(.*)")
+		if filename then
+			pcall(function() for line in io.lines(filename) do table.insert(source, line) end end)
+		elseif info.source then
+			for line in info.source:gmatch("(.-)\n") do table.insert(source, line) end
+		end
+		SOURCE_CACHE[info.source] = source
+	end
+	
+	if source and source[info.currentline] then
+		for i = info.currentline - context_lines, info.currentline + context_lines do
+			local tab_or_caret = (i == info.currentline and  GREEN_CARET or "    ")
+			local line = source[i]
+			if line then dbg_writeln(COLOR_GRAY.."% 4d"..tab_or_caret.."%s", i, line) end
+		end
+	else
+		dbg_writeln(COLOR_RED.."Error: Source not available for "..COLOR_BLUE..info.short_src);
+	end
+	
+	return false
+end
+
+-- Wee version differences
+local unpack = unpack or table.unpack
+local pack = function(...) return {n = select("#", ...), ...} end
+
+local function cmd_step()
+	stack_inspect_offset = stack_top
+	return true, hook_step
+end
+
+local function cmd_next()
+	stack_inspect_offset = stack_top
+	return true, hook_next
+end
+
+local function cmd_finish()
+	local offset = stack_top - stack_inspect_offset
+	stack_inspect_offset = stack_top
+	return true, offset < 0 and hook_factory(offset - 1) or hook_finish
+end
+
+local function cmd_print(expr)
+	local env = local_bindings(1, true)
+	local chunk = compile_chunk("return "..expr, env)
+	if chunk == nil then return false end
+	
+	-- Call the chunk and collect the results.
+	local results = pack(pcall(chunk, unpack(rawget(env, "...") or {})))
+	
+	-- The first result is the pcall error.
+	if not results[1] then
+		dbg_writeln(COLOR_RED.."Error:"..COLOR_RESET.." "..results[2])
+	else
+		local output = ""
+		for i = 2, results.n do
+			output = output..(i ~= 2 and ", " or "")..pretty(results[i])
+		end
+		
+		if output == "" then output = "<no result>" end
+		dbg_writeln(COLOR_BLUE..expr.. GREEN_CARET..output)
+	end
+	
+	return false
+end
+
+local function cmd_eval(code)
+	local env = local_bindings(1, true)
+	local mutable_env = setmetatable({}, {
+		__index = env,
+		__newindex = mutate_bindings,
+	})
+	
+	local chunk = compile_chunk(code, mutable_env)
+	if chunk == nil then return false end
+	
+	-- Call the chunk and collect the results.
+	local success, err = pcall(chunk, unpack(rawget(env, "...") or {}))
+	if not success then
+		dbg_writeln(COLOR_RED.."Error:"..COLOR_RESET.." "..tostring(err))
+	end
+	
+	return false
+end
+
+local function cmd_down()
+	local offset = stack_inspect_offset
+	local info
+	
+	repeat -- Find the next frame with a file.
+		offset = offset + 1
+		info = debug.getinfo(offset + CMD_STACK_LEVEL)
+	until not info or frame_has_line(info)
+	
+	if info then
+		stack_inspect_offset = offset
+		dbg_writeln("Inspecting frame: "..format_stack_frame_info(info))
+		if tonumber(dbg.auto_where) then where(info, dbg.auto_where) end
+	else
+		info = debug.getinfo(stack_inspect_offset + CMD_STACK_LEVEL)
+		dbg_writeln("Already at the bottom of the stack.")
+	end
+	
+	return false
+end
+
+local function cmd_up()
+	local offset = stack_inspect_offset
+	local info
+	
+	repeat -- Find the next frame with a file.
+		offset = offset - 1
+		if offset < stack_top then info = nil; break end
+		info = debug.getinfo(offset + CMD_STACK_LEVEL)
+	until frame_has_line(info)
+	
+	if info then
+		stack_inspect_offset = offset
+		dbg_writeln("Inspecting frame: "..format_stack_frame_info(info))
+		if tonumber(dbg.auto_where) then where(info, dbg.auto_where) end
+	else
+		info = debug.getinfo(stack_inspect_offset + CMD_STACK_LEVEL)
+		dbg_writeln("Already at the top of the stack.")
+	end
+	
+	return false
+end
+
+local function cmd_where(context_lines)
+	local info = debug.getinfo(stack_inspect_offset + CMD_STACK_LEVEL)
+	return (info and where(info, tonumber(context_lines) or 5))
+end
+
+local function cmd_trace()
+	dbg_writeln("Inspecting frame %d", stack_inspect_offset - stack_top)
+	local i = 0; while true do
+		local info = debug.getinfo(stack_top + CMD_STACK_LEVEL + i)
+		if not info then break end
+		
+		local is_current_frame = (i + stack_top == stack_inspect_offset)
+		local tab_or_caret = (is_current_frame and  GREEN_CARET or "    ")
+		dbg_writeln(COLOR_GRAY.."% 4d"..COLOR_RESET..tab_or_caret.."%s", i, format_stack_frame_info(info))
+		i = i + 1
+	end
+	
+	return false
+end
+
+local function cmd_locals()
+	local bindings = local_bindings(1, false)
+	
+	-- Get all the variable binding names and sort them
+	local keys = {}
+	for k, _ in pairs(bindings) do table.insert(keys, k) end
+	table.sort(keys)
+	
+	for _, k in ipairs(keys) do
+		local v = bindings[k]
+		
+		-- Skip the debugger object itself, "(*internal)" values, and Lua 5.2's _ENV object.
+		if not rawequal(v, dbg) and k ~= "_ENV" and not k:match("%(.*%)") then
+			dbg_writeln("  "..COLOR_BLUE..k.. GREEN_CARET..pretty(v))
+		end
+	end
+	
+	return false
+end
+
+local function cmd_help()
+	dbg.write(""
+		.. COLOR_BLUE.."  <return>"..GREEN_CARET.."re-run last command\n"
+		.. COLOR_BLUE.."  c"..COLOR_YELLOW.."(ontinue)"..GREEN_CARET.."continue execution\n"
+		.. COLOR_BLUE.."  s"..COLOR_YELLOW.."(tep)"..GREEN_CARET.."step forward by one line (into functions)\n"
+		.. COLOR_BLUE.."  n"..COLOR_YELLOW.."(ext)"..GREEN_CARET.."step forward by one line (skipping over functions)\n"
+		.. COLOR_BLUE.."  f"..COLOR_YELLOW.."(inish)"..GREEN_CARET.."step forward until exiting the current function\n"
+		.. COLOR_BLUE.."  u"..COLOR_YELLOW.."(p)"..GREEN_CARET.."move up the stack by one frame\n"
+		.. COLOR_BLUE.."  d"..COLOR_YELLOW.."(own)"..GREEN_CARET.."move down the stack by one frame\n"
+		.. COLOR_BLUE.."  w"..COLOR_YELLOW.."(here) "..COLOR_BLUE.."[line count]"..GREEN_CARET.."print source code around the current line\n"
+		.. COLOR_BLUE.."  e"..COLOR_YELLOW.."(val) "..COLOR_BLUE.."[statement]"..GREEN_CARET.."execute the statement\n"
+		.. COLOR_BLUE.."  p"..COLOR_YELLOW.."(rint) "..COLOR_BLUE.."[expression]"..GREEN_CARET.."execute the expression and print the result\n"
+		.. COLOR_BLUE.."  t"..COLOR_YELLOW.."(race)"..GREEN_CARET.."print the stack trace\n"
+		.. COLOR_BLUE.."  l"..COLOR_YELLOW.."(ocals)"..GREEN_CARET.."print the function arguments, locals and upvalues.\n"
+		.. COLOR_BLUE.."  h"..COLOR_YELLOW.."(elp)"..GREEN_CARET.."print this message\n"
+		.. COLOR_BLUE.."  q"..COLOR_YELLOW.."(uit)"..GREEN_CARET.."halt execution\n"
+	)
+	return false
+end
+
+local last_cmd = false
+
+local commands = {
+	["^c$"] = function() return true end,
+	["^s$"] = cmd_step,
+	["^n$"] = cmd_next,
+	["^f$"] = cmd_finish,
+	["^p%s+(.*)$"] = cmd_print,
+	["^e%s+(.*)$"] = cmd_eval,
+	["^u$"] = cmd_up,
+	["^d$"] = cmd_down,
+	["^w%s*(%d*)$"] = cmd_where,
+	["^t$"] = cmd_trace,
+	["^l$"] = cmd_locals,
+	["^h$"] = cmd_help,
+	["^q$"] = function() dbg.exit(0); return true end,
+}
+
+local function match_command(line)
+	for pat, func in pairs(commands) do
+		-- Return the matching command and capture argument.
+		if line:find(pat) then return func, line:match(pat) end
+	end
+end
+
+-- Run a command line
+-- Returns true if the REPL should exit and the hook function factory
+local function run_command(line)
+	-- GDB/LLDB exit on ctrl-d
+	if line == nil then dbg.exit(1); return true end
+	
+	-- Re-execute the last command if you press return.
+	if line == "" then line = last_cmd or "h" end
+	
+	local command, command_arg = match_command(line)
+	if command then
+		last_cmd = line
+		-- unpack({...}) prevents tail call elimination so the stack frame indices are predictable.
+		return unpack({command(command_arg)})
+	elseif dbg.auto_eval then
+		return unpack({cmd_eval(line)})
+	else
+		dbg_writeln(COLOR_RED.."Error:"..COLOR_RESET.." command '%s' not recognized.\nType 'h' and press return for a command list.", line)
+		return false
+	end
+end
+
+repl = function(reason)
+	-- Skip frames without source info.
+	while not frame_has_line(debug.getinfo(stack_inspect_offset + CMD_STACK_LEVEL - 3)) do
+		stack_inspect_offset = stack_inspect_offset + 1
+	end
+	
+	local info = debug.getinfo(stack_inspect_offset + CMD_STACK_LEVEL - 3)
+	reason = reason and (COLOR_YELLOW.."break via "..COLOR_RED..reason..GREEN_CARET) or ""
+	dbg_writeln(reason..format_stack_frame_info(info))
+	
+	if tonumber(dbg.auto_where) then where(info, dbg.auto_where) end
+	
+	repeat
+		local success, done, hook = pcall(run_command, dbg.read(COLOR_RED.."luadebug.lua> "..COLOR_RESET))
+		if success then
+			debug.sethook(hook and hook(0), "crl")
+		else
+			local message = COLOR_RED.."INTERNAL DEBUGGER.LUA ERROR. ABORTING\n:"..COLOR_RESET.." "..done
+			dbg_writeln(message)
+			error(message)
+		end
+	until done
+end
+
+-- Make the debugger object callable like a function.
+dbg = setmetatable({}, {
+	__call = function(_, condition, top_offset, source)
+		if condition then return end
+		
+		top_offset = (top_offset or 0)
+		stack_inspect_offset = top_offset
+		stack_top = top_offset
+		
+		debug.sethook(hook_next(1, source or "dbg()"), "crl")
+		return
+	end,
+})
+
+-- Expose the debugger's IO functions.
+dbg.read = dbg_read
+dbg.write = dbg_write
+dbg.shorten_path = function (path) return path end
+dbg.exit = function(err) os.exit(err) end
+
+dbg.writeln = dbg_writeln
+
+dbg.pretty_depth = 3
+dbg.pretty = pretty
+dbg.pp = function(value, depth) dbg_writeln(pretty(value, depth)) end
+
+dbg.auto_where = false
+dbg.auto_eval = false
+
+local lua_error, lua_assert = error, assert
+
+-- Works like error(), but invokes the debugger.
+function dbg.error(err, level)
+	level = level or 1
+	dbg_writeln(COLOR_RED.."ERROR: "..COLOR_RESET..pretty(err))
+	dbg(false, level, "dbg.error()")
+	
+	lua_error(err, level)
+end
+
+-- Works like assert(), but invokes the debugger on a failure.
+function dbg.assert(condition, message)
+	if not condition then
+		dbg_writeln(COLOR_RED.."ERROR:"..COLOR_RESET..message)
+		dbg(false, 1, "dbg.assert()")
+	end
+	
+	return lua_assert(condition, message)
+end
+
+-- Works like pcall(), but invokes the debugger on an error.
+function dbg.call(f, ...)
+	return xpcall(f, function(err)
+		dbg_writeln(COLOR_RED.."ERROR: "..COLOR_RESET..pretty(err))
+		dbg(false, 1, "dbg.call()")
+		
+		return err
+	end, ...)
+end
+
+-- Error message handler that can be used with lua_pcall().
+function dbg.msgh(...)
+	if debug.getinfo(2) then
+		dbg_writeln(COLOR_RED.."ERROR: "..COLOR_RESET..pretty(...))
+		dbg(false, 1, "dbg.msgh()")
+	else
+		dbg_writeln(COLOR_RED.."luadebug.lua: "..COLOR_RESET.."Error did not occur in Lua code. Execution will continue after dbg_pcall().")
+	end
+	
+	return ...
+end
+
+-- Assume stdin/out are TTYs unless we can use LuaJIT's FFI to properly check them.
+local stdin_isatty = true
+local stdout_isatty = true
+
+-- Conditionally enable the LuaJIT FFI.
+local ffi = (jit and require("ffi"))
+if ffi then
+	ffi.cdef[[
+		int isatty(int); // Unix
+		int _isatty(int); // Windows
+		void free(void *ptr);
+		
+		char *readline(const char *);
+		int add_history(const char *);
+	]]
+	
+	local function get_func_or_nil(sym)
+		local success, func = pcall(function() return ffi.C[sym] end)
+		return success and func or nil
+	end
+	
+	local isatty = get_func_or_nil("isatty") or get_func_or_nil("_isatty")
+	stdin_isatty = isatty(0)
+	stdout_isatty = isatty(1)
+end
+
+-- Conditionally enable color support.
+local color_maybe_supported = (stdout_isatty and os.getenv("TERM") and os.getenv("TERM") ~= "dumb")
+if color_maybe_supported and not os.getenv("DBG_NOCOLOR") then
+	COLOR_GRAY = string.char(27) .. "[90m"
+	COLOR_RED = string.char(27) .. "[91m"
+	COLOR_BLUE = string.char(27) .. "[94m"
+	COLOR_YELLOW = string.char(27) .. "[33m"
+	COLOR_RESET = string.char(27) .. "[0m"
+	GREEN_CARET = string.char(27) .. "[92m => "..COLOR_RESET
+end
+
+if stdin_isatty and not os.getenv("DBG_NOREADLINE") then
+	pcall(function()
+		local linenoise = require 'linenoise'
+		
+		-- Load command history from ~/.lua_history
+		local hist_path = os.getenv('HOME') .. '/.lua_history'
+		linenoise.historyload(hist_path)
+		linenoise.historysetmaxlen(50)
+		
+		local function autocomplete(env, input, matches)
+			for name, _ in pairs(env) do
+				if name:match('^' .. input .. '.*') then
+					linenoise.addcompletion(matches, name)
+				end
+			end
+		end
+		
+		-- Auto-completion for locals and globals
+		linenoise.setcompletion(function(matches, input)
+			-- First, check the locals and upvalues.
+			local env = local_bindings(1, true)
+			autocomplete(env, input, matches)
+			
+			-- Then, check the implicit environment.
+			env = getmetatable(env).__index
+			autocomplete(env, input, matches)
+		end)
+		
+		dbg.read = function(prompt)
+			local str = linenoise.linenoise(prompt)
+			if str and not str:match "^%s*$" then
+				linenoise.historyadd(str)
+				linenoise.historysave(hist_path)
+			end
+			return str
+		end
+		dbg_writeln(COLOR_YELLOW.."luadebug.lua: "..COLOR_RESET.."Linenoise support enabled.")
+	end)
+	
+	-- Conditionally enable LuaJIT readline support.
+	pcall(function()
+		if dbg.read == nil and ffi then
+			local readline = ffi.load("readline")
+			dbg.read = function(prompt)
+				local cstr = readline.readline(prompt)
+				if cstr ~= nil then
+					local str = ffi.string(cstr)
+					if string.match(str, "[^%s]+") then
+						readline.add_history(cstr)
+					end
+
+					ffi.C.free(cstr)
+					return str
+				else
+					return nil
+				end
+			end
+			dbg_writeln(COLOR_YELLOW.."luadebug.lua: "..COLOR_RESET.."Readline support enabled.")
+		end
+	end)
+end
+
+-- Detect Lua version.
+if jit then -- LuaJIT
+	LUA_JIT_SETLOCAL_WORKAROUND = -1
+	dbg_writeln(COLOR_YELLOW.."luadebug.lua: "..COLOR_RESET.."Loaded for "..jit.version)
+elseif "Lua 5.1" <= _VERSION and _VERSION <= "Lua 5.4" then
+	dbg_writeln(COLOR_YELLOW.."luadebug.lua: "..COLOR_RESET.."Loaded for ".._VERSION)
+else
+	dbg_writeln(COLOR_YELLOW.."luadebug.lua: "..COLOR_RESET.."Not tested against ".._VERSION)
+	dbg_writeln("Please send me feedback!")
+end
+
+return dbg
diff --git a/third_party/lua/luadebug.png b/third_party/lua/luadebug.png
new file mode 100644
index 0000000000000000000000000000000000000000..51a5c5384071c52c5d064d0ebfc718b9ec770069
GIT binary patch
literal 66615
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
R8x$V4NQ%jcmI~{8{~vwsb5{TW

literal 0
HcmV?d00001

diff --git a/third_party/lua/luadebug_tutorial.lua b/third_party/lua/luadebug_tutorial.lua
new file mode 100644
index 0000000000..fc97106286
--- /dev/null
+++ b/third_party/lua/luadebug_tutorial.lua
@@ -0,0 +1,279 @@
+-- Run this file and follow along with the prompts.
+-- You'll want to keep this file open to follow along.
+
+local dbg = require("luadebug")
+
+print[[
+	Welcome to the interactive luadebug.lua tutorial.
+	You'll want to open tutorial.lua in an editor to follow along.
+	
+	First of all, just drop luadebug.lua in your project. It's one file.
+	Load it the usual way using require. Ex:
+	local dbg = require("luadebug")
+	
+	luadebug.lua doesn't support traditional breakpoints.
+	So to get into the debugger, call it like a function.
+	Real breakpoints would be better, but this
+	keeps luadebug.lua simple and very fast.
+	At the end you'll find out how to open it automatically on a crash.
+	
+	Notice how luadebug.lua prints out your current file and line
+	as well as which function you are in.
+	Keep a close watch on this as you follow along.
+	It should be stopped a line after the dbg() call.
+	(Line 86 unless I forgot to double update it)
+	
+	Sometimes functions don't have global names.
+	It might print the name of a method, local variable
+	that held the function, or file:line where it starts.
+	
+	Type 'w' to show 5 lines of surrounding code directly in
+	the debugger. (w = Where) Type 'w 3' to show 3 lines, etc.
+	Alternatively, set dbg.auto_where to a number
+	to run it automatically every time the program advances.
+	
+	Once you've tried the where command, type 's' to step to
+	the next line. (s = Step to the next executable line)
+]]
+
+-- Multi-line strings are executable statements apparently
+-- need to put this in an local to make the tutorial flow nicely.
+local str1 = [[
+	The 's' command steps to the next executable line.
+	This may step you into a function call.
+	
+	In this case, then next line was a C function that printed this message.
+	You can't step into C functions, so it just steps over them.
+	
+	If you hit <return>, the debugger will rerun your last command.
+	Hit <return> 5 times to step into and through func1().
+	Watch the line numbers.
+]]
+
+local str2 = [[
+	Stop!
+	You've now stepped through func1()
+	Notice how entering and exiting a function takes a step.
+	
+	Now try the 'n' command.
+	(n = step to the Next line in the source code)
+]]
+
+local function func1()
+	print("	Stepping through func1()...")
+	print("	Almost there...")
+end
+
+local function func2()
+	print("	You used the 'n' command.")
+	print("	So it's skipping over the lines in func2().")
+	
+	local function f()
+		print("	... and anything it might call.")
+	end
+	
+	f()
+	
+	print()
+	print[[
+	The 'n' command steps to the next line in the source file.
+	Unlike the 's' command, it steps over function calls, and not into them.
+	
+	Now try the 'c' command to continue on to the next breakpoint.
+	(c =  Continue execution)
+]]
+end
+
+dbg()
+print(str1)
+
+func1()
+print(str2)
+
+func2()
+
+local function func3()
+	print[[
+	You are now sitting at a breakpoint inside of func3().
+	Let's say you got here by stepping into the function.
+	After poking around for a bit, you just want to step until the
+	function returns, but don't want to
+	run the next command over and over.
+	
+	For this you would use the 'f' command. Try it now.
+	(f = Finish current function)
+]]
+	
+	dbg()
+	
+	print[[
+	Now you are inside func4(), right after where it called func3().
+	func4() has some arguments, local variables and upvalues.
+	Let's assume you want to see them.
+	
+	Try the 'l' command to list all the locally available variables.
+	(l = List local variables)
+	
+	Type 'c' to continue on to the next section.
+]]
+end
+
+local my_upvalue1 = "Wee an upvalue"
+local my_upvalue2 = "Awww, can't see this one"
+globalvar = "Weeee a global"
+
+function func4(a, b, ...)
+	local c = "sea"
+	local varargs_copy = {...}
+	
+	-- Functions only get upvalues if you reference them.
+	local d = my_upvalue1.." ... with stuff appended to it"
+	
+	func3()
+	
+	print[[
+	Some things to notice about the local variables list.
+	'...'
+	  This is the list of varargs passed to the function.
+	  (This only works with Lua 5.2+ or LuaJIT 2.0+)
+	  Note: varargs are not an array, but luadebug.lua stores them that way.
+	'my_upvalue1'
+	  This is a local variable defined outside of, but
+	  referenced by the function. Upvalues show up
+	  *only* when you reference them within your
+	  function. 'my_upvalue2' isn't in the list
+	  because func4() doesn't reference it.
+	
+	Listing the locals is nice, but sometimes there are too many to see at once.
+	Often times it's useful to print just a single variable,
+	evaluate an expression, or call a function to see what it returns.
+	For that you use the 'p' command.
+	(p = Print the result of an expression)
+	
+	Try these commands:
+	p my_upvalue1
+	p 1 + 1
+	p print("foo")
+	p math.cos(0)
+	
+	You can also interact with varargs. (Except on Lua 5.1)
+	For example:
+	p ...
+	p select(2, ...)
+	p {...}
+	
+	Type 'c' to continue to the next section.
+]]
+	dbg()
+	
+	print[[
+	One thing you can't do with the print command is set variables.
+	Assignments are statements, and need to be run with the
+	'e' command. (e = Evaluate a statement)
+	
+	Try these commands:
+	e my_upvalue1 = "foobar"
+	e print(my_upvalue1)
+	
+	Type 'c' to continue to the next section.
+]]
+	dbg()
+end
+
+func4(1, "two", "vararg1", "vararg2", "vararg3")
+
+local function func5()
+	local my_var = "func5()"
+	print[[
+	You are now in func5() which was called from func6().
+	func6() was called from func7().
+	
+	Try the 't' command to print out a backtrace and see for yourself.
+	(t = backTrace)
+	
+	Type 'c' to continue to the next section
+]]
+	dbg()
+	
+	print[[
+	Notice that func5(), func6() and func7() all have a
+	'my_var' local. You can print the func5()'s my_var easily enough.
+	What if you wanted to see what local variables were in func6()
+	or func7() to see how you got where you were?
+	
+	For that you use the 'u' and 'd' commands.
+	(u = Move up a stack frame)
+	(d = Move down a stack frame)
+	
+	Try the 'u' and 'd' commands a few times.
+	Print out the value of my_var using the 'p' command each time.
+	
+	Type 'c' to continue.
+]]
+	dbg()
+end
+
+local function func6()
+	local my_var = "func6()"
+	func5()
+end
+
+local function func7()
+	local my_var = "func7()"
+	func6()
+end
+
+func7()
+
+print[[
+	That leaves only one more command.
+	Wouldn't it be nice if there was a way to remember
+	all these one letter debugger commands?
+	
+	Type 'h' to show the command list.
+	(h = Help)
+	
+	Type 'c' to continue.
+]]
+dbg()
+
+print[[
+	The following loop uses an assert-style breakpoint.
+	It will only engage when the conditional fails. (when i == 5)
+	
+	Type 'c' to continue.
+]]
+
+for i=0, 10 do
+	print("i = "..tostring(i))
+	
+	dbg(i ~= 5)
+end
+
+print[[
+	Last but not least, is the dbg.call() function.
+	It works sort of like Lua's xpcall() function,
+	but starts the debugger when an uncaught error occurs.
+	You can pretty much use it as a drop in replacement.
+	
+	For example:
+		dbg.call(function()
+			-- Potentially buggy code goes here.
+		end)
+	
+	Wrap it around your program's main loop or main entry point.
+	Then when your program crashes, you won't need to go back
+	and add breakpoints.
+	
+	That pretty much wraps ups the basics.
+	Hopefully you find luadebug.lua to be simple but useful.
+]]
+
+dbg.call(function()
+	local foo = "foo"
+	
+	-- Try adding a string and integer
+	local bar = foo + 12
+	
+	-- Program never makes it to here...
+end)
-- 
GitLab