Patchwork [RFA,3/3] Document 'set print frame-info|frame-arguments presence'.

login
register
mail settings
Submitter Philippe Waroquiers
Date May 4, 2019, 9:55 p.m.
Message ID <20190504215538.29821-4-philippe.waroquiers@skynet.be>
Download mbox | patch
Permalink /patch/32559/
State New
Headers show

Comments

Philippe Waroquiers - May 4, 2019, 9:55 p.m.
---
 gdb/NEWS            | 12 +++++++++++
 gdb/doc/ChangeLog   |  5 +++++
 gdb/doc/gdb.texinfo | 51 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 68 insertions(+)
Eli Zaretskii - May 5, 2019, 4:42 p.m.
> From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
> Cc: Philippe Waroquiers <philippe.waroquiers@skynet.be>
> Date: Sat,  4 May 2019 23:55:38 +0200
> 
> diff --git a/gdb/NEWS b/gdb/NEWS
> index b21b2cbb47..893b220acc 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -48,6 +48,18 @@ show may-call-functions
>    an error when a command (such as print expression) calls a function
>    in the program.
>  
> +set print frame-info [short_loc|location|loc_and_address|src_and_loc
> +                        |src_line|auto]
> +show print frame-info
> +  This controls what frame information is printed by the commands printing
> +  a frame.

How about a couple of examples of commands that will be sensitive to
this setting?

> +The command @kbd{set print frame-info} (see @ref{Print Settings}) controls
> +what frame information is printed.      ^^^^^^^^

Please use @pxref instead of "see @ref" there.

>  @cindex do not print frame argument values
> +@cindex do not print frame argument names

These two entries are too similar to be useful.  I suggest to leave
just one, saying "do not print frame arguments".

> +@item presence
> +Only the presence of arguments is signaled by @code{@dots{}}.
                                     ^^^^^^^^
"indicated"

> +the debugger prints a frame.  See @ref{Frames} and @ref{Backtrace}
                                                 ^                   ^
A comma (or a period) should follow the closing braces.

> +for a general explanation about frames and frame information.
> +Note that some other settings (such as @code{set print frame-arguments}
> +Print the frame level, the program counter if not at the
                                             ^
A comma is missing there.

> +beginning of the location source line, the function, the function
> +arguments.
> +@item location
> +Same as @code{short_loc} but also print the source file and source line
> +number.
> +@item loc_and_address
> +Same as @code{location} but print the program counter even if located at the
> +beginning of the location source line.
> +@item src_line
> +Print the program counter if not at the beginning of the location
> +source line, the line number and the source line.
> +@item src_and_loc
> +Print what @code{location} and @code{src_line} are printing.
> +@item auto
> +The information printed for a frame is decided automatically
> +by the @value{GDBN} command that prints a frame.
> +For example, @code{frame} prints the information printed by
> +@code{src_and_loc} while @code{stepi} will switch between
> +@code{src_line} and @code{src_and_loc} depending on the program counter.

Please state what is the default.

Thanks.

Patch

diff --git a/gdb/NEWS b/gdb/NEWS
index b21b2cbb47..893b220acc 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -48,6 +48,18 @@  show may-call-functions
   an error when a command (such as print expression) calls a function
   in the program.
 
+set print frame-info [short_loc|location|loc_and_address|src_and_loc
+                        |src_line|auto]
+show print frame-info
+  This controls what frame information is printed by the commands printing
+  a frame.
+
+* Changed commands
+
+set print frame-arguments
+  The new value 'presence' indicates to only indicate the presence of
+  arguments using ..., instead of printing argument names and values.
+
 *** Changes in GDB 8.3
 
 * GDB and GDBserver now support access to additional registers on
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index a26e20c823..53ba452a7f 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -12825,3 +12825,8 @@  fill-column: 74
 version-control: never
 coding: utf-8
 End:
+2019-05-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Print Settings): Document 'set|show print frame-info'.
+	(Backtraces): Reference 'set print frame-info'.
+
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index dd8ae91b93..5d065c9c79 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -7554,6 +7554,8 @@  The value of parameter @code{data} in frame 1 has been replaced by
 only if it is a scalar (integer, pointer, enumeration, etc).  See command
 @kbd{set print frame-arguments} in @ref{Print Settings} for more details
 on how to configure the way function parameter values are printed.
+The command @kbd{set print frame-info} (see @ref{Print Settings}) controls
+what frame information is printed.
 
 @cindex optimized out, in backtrace
 @cindex function call arguments, optimized out
@@ -10386,6 +10388,7 @@  If the number is 0, then the printing is unlimited.
 @cindex print all frame argument values
 @cindex print frame argument values for scalars only
 @cindex do not print frame argument values
+@cindex do not print frame argument names
 This command allows to control how the values of arguments are printed
 when the debugger prints a frame (@pxref{Frames}).  The possible
 values are:
@@ -10413,6 +10416,17 @@  is replaced by @code{@dots{}}.  In this case, the example above now becomes:
 #1  0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
   at frame-args.c:23
 @end smallexample
+
+@item presence
+Only the presence of arguments is signaled by @code{@dots{}}.
+The @dots{} are not printed for function without any arguments.
+None of the argument names and values are printed.
+In this case, the example above now becomes:
+
+@smallexample
+#1  0x08048361 in call_me (@dots{}) at frame-args.c:23
+@end smallexample
+
 @end table
 
 By default, only scalar arguments are printed.  This command can be used
@@ -10556,6 +10570,43 @@  entry resolution see @ref{set debug entry-values}.
 Show the method being used for printing of frame argument values at function
 entry.
 
+@item set print frame-info @var{value}
+@kindex set print frame-info
+@cindex printing frame information
+@cindex frame information, printing
+This command allows to control the information printed when
+the debugger prints a frame.  See @ref{Frames} and @ref{Backtrace}
+for a general explanation about frames and frame information.
+Note that some other settings (such as @code{set print frame-arguments}
+and @code{set print address}) are also influencing if and how some frame
+information is displayed.  In particular, the frame program counter is never
+printed if @code{set print address} is off.
+
+The possible values for @code{set print frame-info} are:
+@table @code
+@item short_loc
+Print the frame level, the program counter if not at the
+beginning of the location source line, the function, the function
+arguments.
+@item location
+Same as @code{short_loc} but also print the source file and source line
+number.
+@item loc_and_address
+Same as @code{location} but print the program counter even if located at the
+beginning of the location source line.
+@item src_line
+Print the program counter if not at the beginning of the location
+source line, the line number and the source line.
+@item src_and_loc
+Print what @code{location} and @code{src_line} are printing.
+@item auto
+The information printed for a frame is decided automatically
+by the @value{GDBN} command that prints a frame.
+For example, @code{frame} prints the information printed by
+@code{src_and_loc} while @code{stepi} will switch between
+@code{src_line} and @code{src_and_loc} depending on the program counter.
+@end table
+
 @item set print repeats @var{number-of-repeats}
 @itemx set print repeats unlimited
 @cindex repeated array elements