gdb can fill in the rest of a word in a command for you, if there is only one possibility; it can also show you what the valid possibilities are for the next word in a command, at any time. This works for gdb commands, gdb subcommands, and the names of symbols in your program.
Press the
(gdb) info bre |
gdb fills in the rest of the word breakpoints, since that is the only info subcommand beginning with bre:
(gdb) info breakpoints |
You can either press
If there is more than one possibility for the next word when you press
(gdb) b make_ |
After displaying the available possibilities, gdb copies your partial input (b make_ in the example) so you can finish the command.
If you just want to see the list of alternatives in the first place, you
can press M-? rather than pressing
Sometimes the string you need, while logically a "word", may contain parentheses or other characters that gdb normally excludes from its notion of a word. To permit word completion to work in this situation, you may enclose words in ' (single quote marks) in gdb commands.
The most likely situation where you might need this is in typing the
name of a C++ function. This is because C++ allows function
overloading (multiple definitions of the same function, distinguished
by argument type). For example, when you want to set a breakpoint you
may need to distinguish whether you mean the version of name
that takes an int parameter, name(int), or the version
that takes a float parameter, name(float). To use the
word-completion facilities in this situation, type a single quote
' at the beginning of the function name. This alerts
gdb that it may need to consider more information than usual
when you press
(gdb) b 'bubble( M-? bubble(double,double) bubble(int,int) (gdb) b 'bubble( |
In some cases, gdb can tell that completing a name requires using quotes. When this happens, gdb inserts the quote for you (while completing as much as it can) if you do not type the quote in the first place:
(gdb) b bub |
In general, gdb can tell that a quote is needed (and inserts it) if you have not yet started typing the argument list when you ask for completion on an overloaded symbol.
For more information about overloaded functions, refer to Section 14.4.1.3 C++expressions. You can use the command set overload-resolution off to disable overload resolution; refer to Section 14.4.1.7 gdb features for C++.