debug.sethook ([thread,] hook, mask [, count])
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"
),
"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),
unless the event is "tail return"
.
In this case, Lua is only simulating the return,
and a call to getinfo
will return invalid data.