You can tell GDB to always prepend some default arguments to the list of arguments provided explicitly by the user when using a user-defined alias.
If you repeatedly use the same arguments or options for a command, you can define an alias for this command and tell GDB to automatically prepend these arguments or options to the list of arguments you type explicitly when using the alias18.
For example, if you often use the command
thread apply all
specifying to work on the threads in ascending order and to continue in case it
encounters an error, you can tell GDB to automatically preprend
-c options by using:
(gdb) alias thread apply asc-all = thread apply all -ascending -c
Once you have defined this alias with its default args, any time you type
thread apply asc-all followed by
GDB will execute
thread apply all -ascending -c some arguments.
To have even less to type, you can also define a one word alias:
(gdb) alias t_a_c = thread apply all -ascending -c
As usual, unambiguous abbreviations can be used for alias and default-args.
The different aliases of a command do not share their default args.
For example, you define a new alias
bt_ALL showing all possible
information and another alias
bt_SMALL showing very limited information
(gdb) alias bt_ALL = backtrace -entry-values both -frame-arg all \ -past-main -past-entry -full (gdb) alias bt_SMALL = backtrace -entry-values no -frame-arg none \ -past-main off -past-entry off
(For more on using the
alias command, see Aliases.)
Default args are not limited to the arguments and options of command,
but can specify nested commands if command accepts such a nested command
For example, the below defines
faalocalsoftype that lists the
frames having locals of a certain type, together with the matching
(gdb) alias faalocalsoftype = frame apply all info locals -q -t (gdb) faalocalsoftype int #1 0x55554f5e in sleeper_or_burner (v=0xdf50) at sleepers.c:86 i = 0 ret = 21845
This is also very useful to define an alias for a set of nested
commands to have a particular combination of temporary settings. For example,
the below defines the alias
pp10 that pretty prints an expression
argument, with a maximum of 10 elements if the expression is a string or
(gdb) alias pp10 = with print pretty -- with print elements 10 -- print
This defines the alias
pp10 as being a sequence of 3 commands.
The first part
with print pretty -- temporarily activates the setting
set print pretty, then launches the command that follows the separator
The command following the first part is also a
with command that
temporarily changes the setting
set print elements to 10, then
launches the command that follows the second separator
The third part
pp10 alias will launch,
using the temporary values of the settings and the arguments explicitly given
by the user.
For more information about the
with command usage,
see Command Settings.
GDB could easily accept default arguments for pre-defined commands and aliases, but it was deemed this would be confusing, and so is not allowed.