977 User-defined command hooks Contents|Index|Previous|Next

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 the following debugging input.

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 GDB, 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 GDB commands stops and GDB issues a prompt (before the command that you actually used 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.

0