Aside from breakpoint commands (see Section 11.1.6.), the debugger provides two ways to store sequences of commands for execution as a unit: user-defined commands and command files.
A user-defined command is a sequence of the debugger commands to which you assign a new name as a command. This is done with the define command. User commands may accept up to 10 arguments separated by whitespace. Arguments are accessed within the user command via $arg0...$arg9. A trivial example:
define adder print $arg0 + $arg1 + $arg2
To execute the command use:
adder 1 2 3
This defines the command adder, which prints the sum of its three arguments. Note the arguments are text substitutions, so they may reference variables, use complex expressions, or even perform inferior functions calls.
Define a command named commandname. If there is already a command by that name, you are asked to confirm that you want to redefine it.
The definition of the command is made up of other the debugger command lines, which are given following the define command. The end of these commands is marked by a line containing end.
Takes a single argument, which is an expression to evaluate. It is followed by a series of commands that are executed only if the expression is true (nonzero). There can then optionally be a line else, followed by a series of commands that are only executed if the expression was false. The end of the list is marked by a line containing end.
The syntax is similar to if: the command takes a single argument, which is an expression to evaluate, and must be followed by the commands to execute, one per line, terminated by an end. The commands are executed repeatedly as long as the expression evaluates to true.
Document the user-defined command commandname, so that it can be accessed by help. The command commandname must already be defined. This command reads lines of documentation just as define reads the lines of the command definition, ending with end. After the document command is finished, help on command commandname displays the documentation you have written.
You may use the document command again to change the documentation of a command. Redefining the command with define does not change the documentation.
List all user-defined commands, with the first line of the documentation (if any) for each.
Display the debugger commands used to define commandname (but not its documentation). If no commandname is given, display the definitions for all user-defined commands.
When user-defined commands are executed, the commands of the definition are not printed. An error in any command stops execution of the user-defined command.
If used interactively, commands that would ask for confirmation proceed without asking when used inside a user-defined command. Many debugger commands that normally print messages to say what they are doing omit the messages when used in a user-defined command.