Garry's Mod Wiki


  debug.sethook( thread thread, function hook, string mask, number count )


Sets the given function as a Lua hook. This is completely different to gamemode hooks. The thread argument can be completely omitted and calling this function with no arguments will remove the current hook. This is used by default for infinite loop detection. More information on hooks can be found at

Hooks are not always ran when code that has been compiled by LuaJIT's JIT compiler is being executed. This means that relying on them for infinite loop protection is unwise.


1 thread thread
Thread to set the hook on. This argument can be omited
2 function hook
Function for the hook to call
3 string mask
The hook's mask
4 number count
How often to call the hook (in instructions). 0 for every instruction