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.