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 TAB
key whenever you want GDB to fill out the rest
of a word. If there is only one possibility, GDB fills in the
word, and waits for you to finish the command (or press RET
to
enter it). For example, if you type
(gdb) info bre TAB
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 RET
at this point, to run the info breakpoints
command, or backspace and enter something else, if
`breakpoints
' does not look like the command you expected. (If you
were sure you wanted info breakpoints
in the first place, you
might as well just type RET
immediately after `info bre
',
to exploit command abbreviations rather than command completion).
If there is more than one possibility for the next word when you press
TAB
, GDB sounds a bell. You can either supply more
characters and try again, or just press TAB
a second time;
GDB displays all the possible completions for that word. For
example, you might want to set a breakpoint on a subroutine whose name
begins with `make_
', but when you type b make_TAB
GDB
just sounds the bell. Typing TAB
again displays all the
function names in your program that begin with those characters, for
example:
(gdb) b make_TAB
GDB sounds bell; press
make_a_section_from_file make_environ make_abs_section make_function_type make_blockvector make_pointer_type make_cleanup make_reference_type make_command make_symbol_completion_list (gdb) b make_TAB
again, to see:
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 TAB
twice. M-?
means META
?. You can type this either by holding down a
key designated as the META
shift on your keyboard (if there is
one) while typing ?, or as ESC
followed by ?.
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 TAB
or
M-? to request word completion:
(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 bubTAB
GDB alters your input line to the following, and rings a bell:
(gdb) b 'bubble(
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, see C plus plus expressions. You can use the command set overload-resolution off
to disable overload resolution;
see Debugging C plus plus.
Packaging copyright © 1988-2000 OAR Corporation
Context copyright by each document's author. See Free Software Foundation for information.