This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[pushed] Document linespec/explicit locations & completion improvements (manual + NEWS)
- From: Pedro Alves <palves at redhat dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>
- Date: Fri, 24 Nov 2017 15:26:43 +0000
- Subject: [pushed] Document linespec/explicit locations & completion improvements (manual + NEWS)
- Authentication-results: sourceware.org; auth=none
I've split part of the (already approved at [1]) documentation patch
from the C++ breakpoint improvements series, and pushed it in.
[1] - https://sourceware.org/ml/gdb-patches/2017-06/msg00663.html
This part documents the improvements that have already been merged
to master a few months ago.
>From d044bac8ce5e6737d13e7e5180f5a5641053e690 Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Fri, 24 Nov 2017 15:21:16 +0000
Subject: [PATCH] Document linespec/explicit locations & completion
improvements (manual + NEWS)
gdb/ChangeLog:
2017-11-24 Pedro Alves <palves@redhat.com>
* NEWS: Mention linespecs and explicit locations, and completion
improvements.
gdb/doc/ChangeLog:
2017-11-24 Pedro Alves <palves@redhat.com>
* gdb.texinfo (Completion): Update need-quoting examples. Remove
false claim that GDB inserts quoting automatically.
(Symbols): Add anchor.
---
gdb/ChangeLog | 5 +++++
gdb/doc/ChangeLog | 6 ++++++
gdb/doc/gdb.texinfo | 62 ++++++++++++++++++++++++++++++++++-------------------
gdb/NEWS | 29 +++++++++++++++++++++++++
4 files changed, 80 insertions(+), 22 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bec8433..e6762bb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2017-11-24 Pedro Alves <palves@redhat.com>
+
+ * NEWS: Mention linespecs and explicit locations, and completion
+ improvements.
+
2017-11-24 Yao Qi <yao.qi@linaro.org>
* regcache.c (regcache::dump): Remove footnote_register_size.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 81af3aa..62c63f1 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,9 @@
+2017-11-24 Pedro Alves <palves@redhat.com>
+
+ * gdb.texinfo (Completion): Update need-quoting examples. Remove
+ false claim that GDB inserts quoting automatically.
+ (Symbols): Add anchor.
+
2017-11-22 Ulrich Weigand <uweigand@de.ibm.com>
* gdb.texinfo (Requirements): Document use of GNU MPFR.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index ab05a37..afaafc0 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1638,39 +1638,56 @@ its notion of a word. To permit word completion to work in this
situation, you may enclose words in @code{'} (single quote marks) in
@value{GDBN} commands.
-The most likely situation where you might need this is in typing the
-name of a C@t{++} function. This is because C@t{++} 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 @code{name}
-that takes an @code{int} parameter, @code{name(int)}, or the version
-that takes a @code{float} parameter, @code{name(float)}. To use the
-word-completion facilities in this situation, type a single quote
+A likely situation where you might need this is in typing an
+expression that involves a C@t{++} symbol name with template
+parameters. This is because when completing expressions, GDB treats
+the @samp{<} character as word delimiter, assuming that it's the
+less-than comparison operator (@pxref{C Operators, , C and C@t{++}
+Operators}).
+
+For example, when you want to call a C@t{++} template function
+interactively using the @code{print} or @code{call} commands, you may
+need to distinguish whether you mean the version of @code{name} that
+was specialized for @code{int}, @code{name<int>()}, or the version
+that was specialized for @code{float}, @code{name<float>()}. To use
+the word-completion facilities in this situation, type a single quote
@code{'} at the beginning of the function name. This alerts
@value{GDBN} that it may need to consider more information than usual
when you press @key{TAB} or @kbd{M-?} to request word completion:
@smallexample
-(@value{GDBP}) b 'bubble( @kbd{M-?}
-bubble(double,double) bubble(int,int)
-(@value{GDBP}) b 'bubble(
+(@value{GDBP}) p 'func< @kbd{M-?}
+func<int>() func<float>()
+(@value{GDBP}) p 'func<
@end smallexample
-In some cases, @value{GDBN} can tell that completing a name requires using
-quotes. When this happens, @value{GDBN} inserts the quote for you (while
-completing as much as it can) if you do not type the quote in the first
-place:
+When setting breakpoints however (@pxref{Specify Location}), you don't
+usually need to type a quote before the function name, because
+@value{GDBN} understands that you want to set a breakpoint on a
+function:
@smallexample
-(@value{GDBP}) b bub @key{TAB}
-@exdent @value{GDBN} alters your input line to the following, and rings a bell:
-(@value{GDBP}) b 'bubble(
+(@value{GDBP}) b func< @kbd{M-?}
+func<int>() func<float>()
+(@value{GDBP}) b func<
@end smallexample
-@noindent
-In general, @value{GDBN} 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.
+This is true even in the case of typing the name of C@t{++} 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}
+that takes an @code{int} parameter, @code{name(int)}, or the version
+that takes a @code{float} parameter, @code{name(float)}.
+
+@smallexample
+(@value{GDBP}) b bubble( @kbd{M-?}
+bubble(int) bubble(double)
+(@value{GDBP}) b bubble(dou @kbd{M-?}
+bubble(double)
+@end smallexample
+
+See @ref{quoting names} for a description of other scenarios that
+require quoting.
For more information about overloaded functions, see @ref{C Plus Plus
Expressions, ,C@t{++} Expressions}. You can use the command @code{set
@@ -16890,6 +16907,7 @@ file-management commands (@pxref{Files, ,Commands to Specify Files}).
@cindex symbol names
@cindex names of symbols
@cindex quoting names
+@anchor{quoting names}
Occasionally, you may need to refer to symbols that contain unusual
characters, which @value{GDBN} ordinarily treats as word delimiters. The
most frequent case is in referring to static variables in other
diff --git a/gdb/NEWS b/gdb/NEWS
index a239624..b2c96ee 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -23,6 +23,35 @@
the remote inferior is started by the GDBserver, use the "unset
environment" command.
+* Completion improvements
+
+ ** GDB can now complete function parameters in linespecs and
+ explicit locations without quoting. When setting breakpoints,
+ quoting around functions names to help with TAB-completion is
+ generally no longer necessary. For example, this now completes
+ correctly:
+
+ (gdb) b function(in[TAB]
+ (gdb) b function(int)
+
+ Related, GDB is no longer confused with completing functions in
+ C++ anonymous namespaces:
+
+ (gdb) b (anon[TAB]
+ (gdb) b (anonymous namespace)::[TAB][TAB]
+ (anonymous namespace)::a_function()
+ (anonymous namespace)::b_function()
+
+ ** GDB now has much improved linespec and explicit locations TAB
+ completion support, that better understands what you're
+ completing and offers better suggestions. For example, GDB no
+ longer offers data symbols as possible completions when you're
+ setting a breakpoint.
+
+ ** GDB now TAB-completes label symbol names.
+
+ ** The "complete" command now mimics TAB completion accurately.
+
* Python Scripting
** New events gdb.new_inferior, gdb.inferior_deleted, and
--
2.5.5
--
Thanks,
Pedro Alves