Command aliases default args (Debugging with GDB)
23.2.1 Default Arguments
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 the
-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 the
thread apply asc-all followed by
some arguments, 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
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 using:
(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 as argument. For example, the below defines
faalocalsoftype that lists the frames having locals of a certain type, together with the matching local vars:
(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
with 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 an array:
(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.