From patchwork Wed Jun 19 16:06:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 33216 Received: (qmail 16996 invoked by alias); 19 Jun 2019 16:06:45 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 16913 invoked by uid 89); 19 Jun 2019 16:06:44 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-15.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy=influencing, exercising, dots X-HELO: mailsec117.isp.belgacom.be Received: from mailsec117.isp.belgacom.be (HELO mailsec117.isp.belgacom.be) (195.238.20.113) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 19 Jun 2019 16:06:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1560960402; x=1592496402; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UdejDrdgu1BCSemJYh9q+843pW/4AyVGqYG6PJXv58E=; b=HaB0unN3nr+Il1J2v+oitAunuzS2yvK4LuKtiPD2WyB6czvyq0gelC56 8vu9tgFi2fdtML5aFDySO0Uw7sUKsg==; Received: from 96.218-128-109.adsl-dyn.isp.belgacom.be (HELO md.home) ([109.128.218.96]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 19 Jun 2019 18:06:35 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [RFAv3 3/3] Document 'set print frame-info|frame-arguments presence'. Date: Wed, 19 Jun 2019 18:06:27 +0200 Message-Id: <20190619160627.12531-4-philippe.waroquiers@skynet.be> In-Reply-To: <20190619160627.12531-1-philippe.waroquiers@skynet.be> References: <20190619160627.12531-1-philippe.waroquiers@skynet.be> MIME-Version: 1.0 X-IsSubscribed: yes gdb/ChangeLog 2019-06-19 Philippe Waroquiers * NEWS: Mention 'set|show print frame-info'. Mention new 'presence' value for 'frame-arguments'. Mention new '-frame-info' backtrace argument. Mention that python frame filtering code is now consistent with what 'backtrace' command prints. gdb/doc/ChangeLog 2019-06-19 Philippe Waroquiers * gdb.texinfo (Backtrace): Document the new '-frame-info' backtrace option. Reference 'set print frame-info'. (Print Settings): Document 'set|show print frame-info'. Document new 'presence' value for 'set print frame-arguments. --- gdb/NEWS | 19 ++++++++++++++ gdb/doc/gdb.texinfo | 63 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index 2cc82e8656..7579c73090 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -36,6 +36,11 @@ ** gdb.Type has a new property 'objfile' which returns the objfile the type was defined in. + ** The frame information printed by the python frame filtering code + is now consistent with what the 'backtrace' command prints when + there are no filters, or when the 'backtrace' '-no-filters' option + is given. + * New commands | [COMMAND] | SHELL_COMMAND @@ -88,6 +93,14 @@ maint test-settings KIND A set of commands used by the testsuite for exercising the settings infrastructure. +set print frame-info [short-location|location|location-and-address + |source-and-location|source-line|auto] +show print frame-info + This controls what frame information is printed by the commands printing + a frame. This setting will e.g. influence the behaviour of 'backtrace', + 'frame', 'stepi'. The python frame filtering also respect this setting. + The 'backtrace' '-frame-info' option can override this global setting. + * Changed commands help @@ -107,6 +120,10 @@ show style a style name in their output using its own style, to help the user visualize the different styles. +set print frame-arguments + The new value 'presence' indicates to only indicate the presence of + arguments using ..., instead of printing argument names and values. + set print raw-frame-arguments show print raw-frame-arguments @@ -161,6 +178,8 @@ maint show test-options-completion-result -entry-values no|only|preferred|if-needed|both|compact|default -frame-arguments all|scalars|none -raw-frame-arguments [on|off] + -frame-info auto|source-line|location|source-and-location + |location-and-address|short-location -past-main [on|off] -past-entry [on|off] diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 55be2ef692..deac4e4460 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -7713,6 +7713,10 @@ Related setting: @ref{set print frame-arguments}. @item -raw-frame-arguments [@code{on}|@code{off}] Set whether to print frame arguments in raw form. Related setting: @ref{set print raw-frame-arguments}. + +@item -frame-info @code{auto}|@code{source-line}|@code{location}|@code{source-and-location}|@code{location-and-address}|@code{short-location} +Set printing of frame information. +Related setting: @ref{set print frame-info}. @end table The optional @var{qualifier} is maintained for backward compatibility. @@ -7777,6 +7781,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} (@pxref{Print Settings}) controls +what frame information is printed. @cindex optimized out, in backtrace @cindex function call arguments, optimized out @@ -10723,7 +10729,7 @@ If the number is 0, then the printing is unlimited. @cindex printing frame argument values @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 arguments This command allows to control how the values of arguments are printed when the debugger prints a frame (@pxref{Frames}). The possible values are: @@ -10751,6 +10757,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 indicated by @code{@dots{}}. +The @code{@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 @@ -10761,8 +10778,8 @@ information printed in each frame, making the backtrace more readable. Also, it improves performance when displaying Ada frames, because the computation of large arguments can sometimes be CPU-intensive, especially in large applications. Setting @code{print frame-arguments} -to @code{scalars} (the default) or @code{none} avoids this computation, -thus speeding up the display of each Ada frame. +to @code{scalars} (the default), @code{none} or @code{presence} avoids +this computation, thus speeding up the display of each Ada frame. @item show print frame-arguments Show how the value of arguments should be displayed when printing a frame. @@ -10895,6 +10912,46 @@ entry resolution see @ref{set debug entry-values}. Show the method being used for printing of frame argument values at function entry. +@anchor{set print frame-info} +@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}, @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-location +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-location} but also print the source file and source line +number. +@item location-and-address +Same as @code{location} but print the program counter even if located at the +beginning of the location source line. +@item source-line +Print the program counter (if not at the beginning of the location +source line), the line number and the source line. +@item source-and-location +Print what @code{location} and @code{source-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{source-and-location} while @code{stepi} will switch between +@code{source-line} and @code{source-and-location} depending on the program +counter. +The default value is @code{auto}. +@end table + @anchor{set print repeats} @item set print repeats @var{number-of-repeats} @itemx set print repeats unlimited