lua_Debug
typedef struct lua_Debug { int event; const char *name; /* (n) */ const char *namewhat; /* (n) */ const char *what; /* (S) */ const char *source; /* (S) */ int currentline; /* (l) */ int nups; /* (u) number of upvalues */ int linedefined; /* (S) */ int lastlinedefined; /* (S) */ char short_src[LUA_IDSIZE]; /* (S) */ /* private part */ other fields } lua_Debug;
A structure used to carry different pieces of
information about an active function.
lua_getstack
fills only the private part
of this structure, for later use.
To fill the other fields of lua_Debug
with useful information,
call lua_getinfo
.
The fields of lua_Debug
have the following meaning:
source
:
If the function was defined in a string,
then source
is that string.
If the function was defined in a file,
then source
starts with a '@
' followed by the file name.
short_src
:
a "printable" version of source
, to be used in error messages.
linedefined
:
the line number where the definition of the function starts.
lastlinedefined
:
the line number where the definition of the function ends.
what
:
the string "Lua"
if the function is a Lua function,
"C"
if it is a C function,
"main"
if it is the main part of a chunk,
and "tail"
if it was a function that did a tail call.
In the latter case,
Lua has no other information about the function.
currentline
:
the current line where the given function is executing.
When no line information is available,
currentline
is set to -1.
name
:
a reasonable name for the given function.
Because functions in Lua are first-class values,
they do not have a fixed name:
some functions may be the value of multiple global variables,
while others may be stored only in a table field.
The lua_getinfo
function checks how the function was
called to find a suitable name.
If it cannot find a name,
then name
is set to NULL
.
namewhat
:
explains the name
field.
The value of namewhat
can be
"global"
, "local"
, "method"
,
"field"
, "upvalue"
, or ""
(the empty string),
according to how the function was called.
(Lua uses the empty string when no other option seems to apply.)
nups
:
the number of upvalues of the function.