|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
-
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with the
- Invariant Sections being "Free Software" and "Free Software Needs
- Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
- and with the Back-Cover Texts as in (a) below.
-
- (a) The FSF's Back-Cover Text is: "You are free to copy and modify
- this GNU Manual. Buying copies from GNU Press supports the FSF in
- developing GNU and promoting software freedom." -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Completion (Debugging with GDB)</title>
-
- <meta name="description" content="Completion (Debugging with GDB)">
- <meta name="keywords" content="Completion (Debugging with GDB)">
- <meta name="resource-type" content="document">
- <meta name="distribution" content="global">
- <meta name="Generator" content="makeinfo">
- <link href="index.html#Top" rel="start" title="Top">
- <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
- <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
- <link href="Commands.html#Commands" rel="up" title="Commands">
- <link href="Command-Options.html#Command-Options" rel="next" title="Command Options">
- <link href="Command-Settings.html#Command-Settings" rel="prev" title="Command Settings">
- <style type="text/css">
- <!--
- a.summary-letter {text-decoration: none}
- blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
- div.display {margin-left: 3.2em}
- div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
- kbd {font-style: oblique}
- pre.display {font-family: inherit}
- pre.format {font-family: inherit}
- pre.menu-comment {font-family: serif}
- pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
- span.nolinebreak {white-space: nowrap}
- span.roman {font-family: initial; font-weight: normal}
- span.sansserif {font-family: sans-serif; font-weight: normal}
- ul.no-bullet {list-style: none}
- -->
- </style>
-
-
- </head>
-
- <body lang="en">
- <a name="Completion"></a>
- <div class="header">
- <p>
- Next: <a href="Command-Options.html#Command-Options" accesskey="n" rel="next">Command Options</a>, Previous: <a href="Command-Settings.html#Command-Settings" accesskey="p" rel="prev">Command Settings</a>, Up: <a href="Commands.html#Commands" accesskey="u" rel="up">Commands</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <hr>
- <a name="Command-Completion"></a>
- <h3 class="section">3.3 Command Completion</h3>
-
- <a name="index-completion"></a>
- <a name="index-word-completion"></a>
- <p><small>GDB</small> 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 <small>GDB</small>
- commands, <small>GDB</small> subcommands, command options, and the names of symbols
- in your program.
- </p>
- <p>Press the <tt class="key">TAB</tt> key whenever you want <small>GDB</small> to fill out the rest
- of a word. If there is only one possibility, <small>GDB</small> fills in the
- word, and waits for you to finish the command (or press <tt class="key">RET</tt> to
- enter it). For example, if you type
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) info bre <span class="key">TAB</span>
- </pre></div>
-
- <p><small>GDB</small> fills in the rest of the word ‘<samp>breakpoints</samp>’, since that is
- the only <code>info</code> subcommand beginning with ‘<samp>bre</samp>’:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) info breakpoints
- </pre></div>
-
- <p>You can either press <tt class="key">RET</tt> at this point, to run the <code>info
- breakpoints</code> command, or backspace and enter something else, if
- ‘<samp>breakpoints</samp>’ does not look like the command you expected. (If you
- were sure you wanted <code>info breakpoints</code> in the first place, you
- might as well just type <tt class="key">RET</tt> immediately after ‘<samp>info bre</samp>’,
- to exploit command abbreviations rather than command completion).
- </p>
- <p>If there is more than one possibility for the next word when you press
- <tt class="key">TAB</tt>, <small>GDB</small> sounds a bell. You can either supply more
- characters and try again, or just press <tt class="key">TAB</tt> a second time;
- <small>GDB</small> displays all the possible completions for that word. For
- example, you might want to set a breakpoint on a subroutine whose name
- begins with ‘<samp>make_</samp>’, but when you type <kbd>b make_<span class="key">TAB</span></kbd> <small>GDB</small>
- just sounds the bell. Typing <tt class="key">TAB</tt> again displays all the
- function names in your program that begin with those characters, for
- example:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) b make_ <span class="key">TAB</span>
- </pre><pre class="smallexample">GDB sounds bell; press <span class="key">TAB</span> again, to see:
- </pre><pre class="smallexample">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_
- </pre></div>
-
- <p>After displaying the available possibilities, <small>GDB</small> copies your
- partial input (‘<samp>b make_</samp>’ in the example) so you can finish the
- command.
- </p>
- <p>If you just want to see the list of alternatives in the first place, you
- can press <kbd>M-?</kbd> rather than pressing <tt class="key">TAB</tt> twice. <kbd>M-?</kbd>
- means <kbd><span class="key">META</span> ?</kbd>. You can type this either by holding down a
- key designated as the <tt class="key">META</tt> shift on your keyboard (if there is
- one) while typing <kbd>?</kbd>, or as <tt class="key">ESC</tt> followed by <kbd>?</kbd>.
- </p>
- <p>If the number of possible completions is large, <small>GDB</small> will
- print as much of the list as it has collected, as well as a message
- indicating that the list may be truncated.
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) b m<span class="key">TAB</span><span class="key">TAB</span>
- main
- <... the rest of the possible completions ...>
- *** List may be truncated, max-completions reached. ***
- (gdb) b m
- </pre></div>
-
- <p>This behavior can be controlled with the following commands:
- </p>
- <dl compact="compact">
- <dd><a name="index-set-max_002dcompletions"></a>
- </dd>
- <dt><code>set max-completions <var>limit</var></code></dt>
- <dt><code>set max-completions unlimited</code></dt>
- <dd><p>Set the maximum number of completion candidates. <small>GDB</small> will
- stop looking for more completions once it collects this many candidates.
- This is useful when completing on things like function names as collecting
- all the possible candidates can be time consuming.
- The default value is 200. A value of zero disables tab-completion.
- Note that setting either no limit or a very large limit can make
- completion slow.
- <a name="index-show-max_002dcompletions"></a>
- </p></dd>
- <dt><code>show max-completions</code></dt>
- <dd><p>Show the maximum number of candidates that <small>GDB</small> will collect and show
- during completion.
- </p></dd>
- </dl>
-
- <a name="index-quotes-in-commands"></a>
- <a name="index-completion-of-quoted-strings"></a>
- <p>Sometimes the string you need, while logically a “word”, may contain
- parentheses or other characters that <small>GDB</small> normally excludes from
- its notion of a word. To permit word completion to work in this
- situation, you may enclose words in <code>'</code> (single quote marks) in
- <small>GDB</small> commands.
- </p>
- <p>A likely situation where you might need this is in typing an
- expression that involves a C<tt>++</tt> symbol name with template
- parameters. This is because when completing expressions, GDB treats
- the ‘<samp><</samp>’ character as word delimiter, assuming that it’s the
- less-than comparison operator (see <a href="C-Operators.html#C-Operators">C and C<tt>++</tt>
- Operators</a>).
- </p>
- <p>For example, when you want to call a C<tt>++</tt> template function
- interactively using the <code>print</code> or <code>call</code> commands, you may
- need to distinguish whether you mean the version of <code>name</code> that
- was specialized for <code>int</code>, <code>name<int>()</code>, or the version
- that was specialized for <code>float</code>, <code>name<float>()</code>. To use
- the word-completion facilities in this situation, type a single quote
- <code>'</code> at the beginning of the function name. This alerts
- <small>GDB</small> that it may need to consider more information than usual
- when you press <tt class="key">TAB</tt> or <kbd>M-?</kbd> to request word completion:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) p 'func< <kbd>M-?</kbd>
- func<int>() func<float>()
- (gdb) p 'func<
- </pre></div>
-
- <p>When setting breakpoints however (see <a href="Specify-Location.html#Specify-Location">Specify Location</a>), you don’t
- usually need to type a quote before the function name, because
- <small>GDB</small> understands that you want to set a breakpoint on a
- function:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) b func< <kbd>M-?</kbd>
- func<int>() func<float>()
- (gdb) b func<
- </pre></div>
-
- <p>This is true even in the case of typing the name of C<tt>++</tt> overloaded
- functions (multiple definitions of the same function, distinguished by
- argument type). For example, when you want to set a breakpoint you
- don’t need to distinguish whether you mean the version of <code>name</code>
- that takes an <code>int</code> parameter, <code>name(int)</code>, or the version
- that takes a <code>float</code> parameter, <code>name(float)</code>.
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) b bubble( <kbd>M-?</kbd>
- bubble(int) bubble(double)
- (gdb) b bubble(dou <kbd>M-?</kbd>
- bubble(double)
- </pre></div>
-
- <p>See <a href="Symbols.html#quoting-names">quoting names</a> for a description of other scenarios that
- require quoting.
- </p>
- <p>For more information about overloaded functions, see <a href="C-Plus-Plus-Expressions.html#C-Plus-Plus-Expressions">C<tt>++</tt> Expressions</a>. You can use the command <code>set
- overload-resolution off</code> to disable overload resolution;
- see <a href="Debugging-C-Plus-Plus.html#Debugging-C-Plus-Plus"><small>GDB</small> Features for C<tt>++</tt></a>.
- </p>
- <a name="index-completion-of-structure-field-names"></a>
- <a name="index-structure-field-name-completion"></a>
- <a name="index-completion-of-union-field-names"></a>
- <a name="index-union-field-name-completion"></a>
- <p>When completing in an expression which looks up a field in a
- structure, <small>GDB</small> also tries<a name="DOCF2" href="#FOOT2"><sup>2</sup></a> to
- limit completions to the field names available in the type of the
- left-hand-side:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) p gdb_stdout.<kbd>M-?</kbd>
- magic to_fputs to_rewind
- to_data to_isatty to_write
- to_delete to_put to_write_async_safe
- to_flush to_read
- </pre></div>
-
- <p>This is because the <code>gdb_stdout</code> is a variable of the type
- <code>struct ui_file</code> that is defined in <small>GDB</small> sources as
- follows:
- </p>
- <div class="smallexample">
- <pre class="smallexample">struct ui_file
- {
- int *magic;
- ui_file_flush_ftype *to_flush;
- ui_file_write_ftype *to_write;
- ui_file_write_async_safe_ftype *to_write_async_safe;
- ui_file_fputs_ftype *to_fputs;
- ui_file_read_ftype *to_read;
- ui_file_delete_ftype *to_delete;
- ui_file_isatty_ftype *to_isatty;
- ui_file_rewind_ftype *to_rewind;
- ui_file_put_ftype *to_put;
- void *to_data;
- }
- </pre></div>
-
- <div class="footnote">
- <hr>
- <h4 class="footnotes-heading">Footnotes</h4>
-
- <h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
- <p>The completer can be
- confused by certain kinds of invalid expressions. Also, it only
- examines the static type of the expression, not the dynamic type.</p>
- </div>
- <hr>
- <div class="header">
- <p>
- Next: <a href="Command-Options.html#Command-Options" accesskey="n" rel="next">Command Options</a>, Previous: <a href="Command-Settings.html#Command-Settings" accesskey="p" rel="prev">Command Settings</a>, Up: <a href="Commands.html#Commands" accesskey="u" rel="up">Commands</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
- </div>
-
-
-
- </body>
- </html>
|