21.2. User-Defined Command Hooks

You may define hooks, which are a special kind of user-defined command. Whenever you run the command foo, if the user-defined command hook-foo exists, it is executed (with no arguments) before that command.

In addition, a pseudo-command, stop exists. Defining (hook-stop) makes the associated commands execute every time execution stops in your program: before breakpoint commands are run, displays are printed, or the stack frame is printed.

For example, to ignore SIGALRM signals while single-stepping, but treat them normally during normal execution, you could define:

define hook-stop
handle SIGALRM nopass
end
define hook-run
handle SIGALRM pass
end
define hook-continue
handle SIGLARM pass
end

You can define a hook for any single-word command in the debugger, but not for command aliases; you should define a hook for the basic command name, e.g. backtrace rather than bt. If an error occurs during the execution of your hook, execution of the debugger commands stops and the debugger issues a prompt (before the command that you actually typed had a chance to run).

If you try to define a hook which does not match any known command, you get a warning from the define command.