gdb.info: Hooks

Go forward to Command Files
Go backward to Define
Go up to Sequences
Go to the top op gdb

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.
   A hook may also be defined which is run after the command you
executed.  Whenever you run the command `foo', if the user-defined
command `hookpost-foo' exists, it is executed (with no arguments) after
that command.  Post-execution hooks may exist simultaneously with
pre-execution hooks, for the same command.
   It is valid for a hook to call the command which it hooks.  If this
occurs, the hook is not re-executed, thereby avoiding infinte recursion.
   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
   As a further example, to hook at the begining and end of the `echo'
command, and to add extra text to the beginning and end of the message,
you could define:
     define hook-echo
     echo <<<---
     end
     define hookpost-echo
     echo --->>>\n
     end
     (gdb) echo Hello World
     <<<---Hello World--->>>
     (gdb)
   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 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.