blob: 01f39e5c9c23daaa08fc4135ab6a5f35db6a7485 [file] [log] [blame]
-------------------------------------------------------------------------------
-- The Debug Library.
-- This library provides the functionality of the debug interface to Lua programs.
-- You should exert care when using this library. Several of its functions violate
-- basic assumptions about Lua code (e.g., that variables local to a function
-- cannot be accessed from outside; that userdata metatables cannot be changed
-- by Lua code; that Lua programs do not crash) and therefore can compromise
-- otherwise secure code. Moreover, some functions in this library may be slow.
--
-- All functions in this library are provided inside the `debug` table.
-- All functions that operate over a thread have an optional first argument
-- which is the thread to operate over. The default is always the current thread.
-- @module debug
-------------------------------------------------------------------------------
-- Enters an interactive mode with the user, running each string that
-- the user enters. Using simple commands and other debug facilities,
-- the user can inspect global and local variables, change their values,
-- evaluate expressions, and so on. A line containing only the word `cont`
-- finishes this function, so that the caller continues its execution.
--
-- Note that commands for `debug.debug` are not lexically nested within any
-- function, and so have no direct access to local variables.
-- @function [parent=#debug] debug
-------------------------------------------------------------------------------
-- Returns the current hook settings of the thread, as three values: the
-- current hook function, the current hook mask, and the current hook count
-- (as set by the `debug.sethook` function).
-- @function [parent=#debug] gethook
-- @param #thread thread thread to handle (optional).
-------------------------------------------------------------------------------
-- Returns a table with information about a function. You can give the
-- function directly, or you can give a number as the value of `func`,
-- which means the function running at level `func` of the call stack
-- of the given thread: level 0 is the current function (`getinfo` itself);
-- level 1 is the function that called `getinfo`; and so on. If `function`
-- is a number larger than the number of active functions, then `getinfo`
-- returns **nil**.
--
-- The returned table can contain all the fields returned by `lua_getinfo`,
-- with the string `what` describing which fields to fill in. The default for
-- `what` is to get all information available, except the table of valid
-- lines. If present, the option '`f`' adds a field named `func` with
-- the function itself. If present, the option '`L`' adds a field named
-- `activelines` with the table of valid lines.
--
-- For instance, the expression `debug.getinfo(1,"n").name` returns a table
-- with a name for the current function, if a reasonable name can be found,
-- and the expression `debug.getinfo(print)` returns a table with all available
-- information about the `print` function.
-- @function [parent=#debug] getinfo
-- @param #thread thread thread to handle (optional).
-- @param func the function or a number which means the function running at level `func`.
-- @param #string what used to precise information returned (optional).
-- @return #table with information about the function `func`.
-------------------------------------------------------------------------------
-- This function returns the name and the value of the `local` variable with index
-- local of the function at level `f` of the stack. This function accesses not only
-- xplicit local variables, but also parameters, temporaries, etc.
--
-- The first parameter or local variable has index `1`, and so on, until the last
-- active variable. Negative indices refer to vararg parameters; `-1` is the first
-- vararg parameter. The function returns **nil** if there is no variable with the
-- given index, and raises an error when called with a level out of range.
-- (You can call `debug.getinfo` to check whether the level is valid.)
--
-- Variable names starting with '(' (open parenthesis) represent internal
-- variables (loop control variables, temporaries, varargs, and C function locals).
--
-- The parameter `f` may also be a function. In that case, getlocal returns
-- only the name of function parameters.
-- @function [parent=#debug] getlocal
-- @param #thread thread thread which owns the local variable (optional).
-- @param f the stack level or a function
-- @param #number local the index of the local variable.
-- @return #string The name and the value of the local variable with
-- index `local` of the function at level `level` of the stack.
-- @return #nil if no variable was found
-------------------------------------------------------------------------------
-- Returns the metatable of the given `value` or **nil** if it does not have
-- a metatable.
-- @function [parent=#debug] getmetatable
-- @param value value to handle.
-- @return #table the metatable of the given `object` or nil if it does not have
-- a metatable.
-------------------------------------------------------------------------------
-- Returns the registry table.
-- @function [parent=#debug] getregistry
-- @return #table The registry table
-------------------------------------------------------------------------------
-- This function returns the name and the value of the upvalue with index
-- `up` of the function `f`. The function returns **nil** if there is no
-- upvalue with the given index.
-- @function [parent=#debug] getupvalue
-- @param f function which owns the upvalue.
-- @param #number up index of upvalue.
-- @return The name and the value of the upvalue of the function `f`.
-- @return #nil no upvalue found.
-------------------------------------------------------------------------------
-- Returns the Lua value associated to `u`. If `u` is not a userdata, returns **nil**.
-- @function [parent=#debug] getuservalue
-- @param #userdata u userdata
-- @return the value of the userdata
-- @return #nil no userdata found
-------------------------------------------------------------------------------
-- Sets the given function as a hook. The string `mask` and the number
-- `count` describe when the hook will be called. The string mask may have
-- the following characters, with the given meaning:
--
-- * `"c"`: the hook is called every time Lua calls a function;
-- * `"r"`: the hook is called every time Lua returns from a function;
-- * `"l"`: the hook is called every time Lua enters a new line of code.
--
-- With a `count` different from zero, the hook is called after every `count`
-- instructions.
--
-- When called without arguments, `debug.sethook` turns off the hook.
--
-- When the hook is called, its first parameter is a string describing
-- the event that has triggered its call: `"call"`, `"return"` (or `"tail
-- return"`, when simulating a return from a tail call), `"line"`, and
-- `"count"`. For line events, the hook also gets the new line number as its
-- second parameter. Inside a hook, you can call `getinfo` with level 2 to
-- get more information about the running function (level 0 is the `getinfo`
-- function, and level 1 is the hook function).
-- @function [parent=#debug] sethook
-- @param #thread thread thread on which the hook is set (optional).
-- @param hook a function which takes two argument : event as string and line number.
-- @param #string mask could be `"c"`, `"r"` or `"l"`.
-- @param #number count the hook is called after every `count` instructions (optional).
-------------------------------------------------------------------------------
-- This function assigns the value `value` to the local variable with
-- index `local` of the function at level `level` of the stack. The function
-- returns **nil** if there is no local variable with the given index, and raises
-- an error when called with a `level` out of range. (You can call `getinfo`
-- to check whether the level is valid.) Otherwise, it returns the name of
-- the local variable.
-- See debug.getlocal for more information about variable indices and names.
-- @function [parent=#debug] setlocal
-- @param #thread thread thread which owns the local variable (optional).
-- @param #number level the stack level.
-- @param #number local the index of the local variable.
-- @param value the new value.
-- @return #string the name of the variable if it succeed.
-- @return #nil no local variable with the given index.
-------------------------------------------------------------------------------
-- Sets the metatable for the given `value` to the given `table` (which
-- can be **nil**). Returns `value`.
-- @function [parent=#debug] setmetatable
-- @param value value to handle.
-- @param #table table the metatable for `object`.
-- @return the given value
-------------------------------------------------------------------------------
-- This function assigns the value `value` to the upvalue with index `up`
-- of the function `f`. The function returns **nil** if there is no upvalue
-- with the given index. Otherwise, it returns the name of the upvalue.
-- @function [parent=#debug] setupvalue
-- @param func function which owns the upvalue.
-- @param #number up index of the upvalue.
-- @param value the new value.
-- @return #string the name of the upvalue if it succeed.
-- @return #nil if there no upvalue with the given index.
-------------------------------------------------------------------------------
-- If `message` is present but is neither a `#string` nor **nil**, this function returns
-- message without further processing. Otherwise, it returns a string with
-- a traceback of the call stack. An optional `message` string is appended at
-- the beginning of the traceback. An optional `level` number tells at which
-- level to start the traceback (default is 1, the function calling traceback).
-- @function [parent=#debug] traceback
-- @param #thread thread thread which owns the local variable (optional).
-- @param #string message original message (optional).
-- @param #number level (1 by default, optional).
-- @return #string message with additional traceback informations.
-------------------------------------------------------------------------------
-- Returns an unique identifier (as a light userdata) for the upvalue `n`
-- from the given function.
--
-- These unique identifiers allow a program to check whether different closures
-- share upvalues. Lua closures that share an upvalue (that is, that access a same
-- external local variable) will return identical ids for those upvalue indices.
-- @function [parent=#debug] upvalueid
-- @param f function which owns the upvalue.
-- @param #number n index of the upvalue.
-- @return #userdata id of the upvalue
-------------------------------------------------------------------------------
-- Make the `n1`-th upvalue of the Lua closure `f1` refer to the `n2`-th upvalue of the Lua closure `f2`.
-- @function [parent=#debug] upvaluejoin
-- @param f1 function.
-- @param #number n1 upvalue index in the function.
-- @param f2 targeted function.
-- @param #number n2 upvalue index in the targeted function.
return nil