From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 49000 invoked by alias); 22 Oct 2018 14:17:18 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 48974 invoked by uid 89); 22 Oct 2018 14:17:17 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Frame, acquisition, finds, pause X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 22 Oct 2018 14:17:15 +0000 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8A9571E2CD; Mon, 22 Oct 2018 14:17:14 +0000 (UTC) Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id BCB316D77C; Mon, 22 Oct 2018 14:17:13 +0000 (UTC) Subject: Re: [RFAv3 3/5] Document changes to info [args|functions|locals|variables] To: Philippe Waroquiers , gdb-patches@sourceware.org References: <20180923214209.985-1-philippe.waroquiers@skynet.be> <20180923214209.985-4-philippe.waroquiers@skynet.be> From: Pedro Alves Message-ID: <60a91a0c-0f8a-d495-44ea-e4e1d1e847d8@redhat.com> Date: Mon, 22 Oct 2018 14:17:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180923214209.985-4-philippe.waroquiers@skynet.be> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2018-10/txt/msg00475.txt.bz2 A few small suggestions below. On 09/23/2018 10:42 PM, Philippe Waroquiers wrote: > Document changes to info [args|functions|locals|variables] > > gdb/doc/ChangeLog > 2018-09-23 Philippe Waroquiers > > * gdb.texinfo (Information About a Frame): Document changes > to 'info args' and 'info locals'. > (Examining the Symbol Table): Document changes to 'info functions' > and 'info variables'. > --- > gdb/doc/gdb.texinfo | 121 +++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 109 insertions(+), 12 deletions(-) > > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo > index b5b6089153..cf4ffa2a94 100644 > --- a/gdb/doc/gdb.texinfo > +++ b/gdb/doc/gdb.texinfo > @@ -7767,15 +7767,73 @@ architectures) that you specify in the @code{frame} command. > @xref{Selection, ,Selecting a Frame}. > > @kindex info args > -@item info args > +@item info args [-q] > Print the arguments of the selected frame, each on a separate line. > > +The optional flag @samp{-q}, which stands for @samp{quiet}, disables > +printing header information and messages explaining why no argument > +have been printed. > + > +@item info args [-q] [-t @var{type_regexp}] [@var{regexp}] > +Like @kbd{info args}, but only print the arguments selected > +with the provided regexp(s). > + > +If @var{regexp} is provided, print only the arguments whose names > +contain a match for regular expression @var{regexp}. "contain a match for" gave me pause. I'd suggest saying instead: whose names match the regular expression @var{regexp}. > + > +If @var{type_regexp} is provided, print only the arguments whose > +types, as printed by the @code{whatis} command, contain a match > +for regular expression @var{type_regexp}. [....] command, match the regular expression @var{type_regexp}. > +If @var{type_regexp} contains space(s), it should be enclosed in > +quote characters. If needed, use backslash to escape the meaning > +of special characters or quotes. > + > +If both @var{regexp} and @var{type_regexp} are provided, an argument > +is printed only if it matches the two regexps. > + > @item info locals > -@kindex info locals > +@kindex info locals [-q] > Print the local variables of the selected frame, each on a separate > line. These are all variables (declared either static or automatic) > accessible at the point of execution of the selected frame. > > +The optional flag @samp{-q}, which stands for @samp{quiet}, disables > +printing header information and messages explaining why no local variables > +have been printed. > + > +@item info locals [-q] [-t @var{type_regexp}] [@var{regexp}] > +Like @kbd{info locals}, but only print the local variables selected > +with the provided regexp(s). > + > +If @var{regexp} is provided, print only the local variables whose names > +contain a match for regular expression @var{regexp}. Likewise. > + > +If @var{type_regexp} is provided, print only the local variables whose > +types, as printed by the @code{whatis} command, contain a match > +for regular expression @var{type_regexp}. > +If @var{type_regexp} contains space(s), it should be enclosed in > +quote characters. If needed, use backslash to escape the meaning > +of special characters or quotes. > + > +If both @var{regexp} and @var{type_regexp} are provided, a local variable > +is printed only if it matches the two regexps. Likewise. > + > +The command @kbd{info locals -q -t @var{type_regexp}} can usefully be > +combined with the commands @kbd{frame apply} and @kbd{thread apply}. > +For example, your program might use Resource Acquisition Is > +Initialization types (RAII) such as @code{lock_something_t}: each > +local variable of type @code{lock_something_t} automatically places a > +lock that is destroyed when the variable goes out of scope. You can > +then list all acquired locks in your program by doing > +@smallexample > +thread apply all -s frame apply all -s info locals -q -t lock_something_t > +@end smallexample > +@noindent > +or the equivalent shorter form > +@smallexample > +tfaas i lo -q -t lock_something_t > +@end smallexample Nice. Thanks for the example. > + > @end table > > @node Frame Apply > @@ -17857,32 +17915,71 @@ debugging information, organized into two lists: files whose symbols > have already been read, and files whose symbols will be read when needed. > > @kindex info functions > -@item info functions > +@item info functions [-q] > Print the names and data types of all defined functions. > Similarly to @samp{info types}, this command groups its output by source > files and annotates each function definition with its source line > number. > > -@item info functions @var{regexp} > -Like @samp{info functions}, but only print the names and data types of > -functions whose names contain a match for regular expression > -@var{regexp}. Thus, @samp{info fun step} finds all functions whose > +The optional flag @samp{-q}, which stands for @samp{quiet}, disables > +printing header information and messages explaining why no functions > +have been printed. > + > +@item info functions [-q] [-t @var{type_regexp}] [@var{regexp}] > +Like @samp{info functions}, but only print the names and data types > +of the functions selected with the provided regexp(s). > + > +If @var{regexp} is provided, print only the functions whose names > +contain a match for regular expression @var{regexp}. > +Thus, @samp{info fun step} finds all functions whose > names include @code{step}; @samp{info fun ^step} finds those whose names > start with @code{step}. If a function name contains characters that > conflict with the regular expression language (e.g.@: > @samp{operator*()}), they may be quoted with a backslash. > > +If @var{type_regexp} is provided, print only the functions whose > +types, as printed by the @code{whatis} command, contain a match > +for regular expression @var{type_regexp}. > +If @var{type_regexp} contains space(s), it should be enclosed in > +quote characters. If needed, use backslash to escape the meaning > +of special characters or quotes. > +Thus, @samp{info fun -t '^int ('} finds the functions that return > +an integer; @samp{info fun -t '(.*int.*'} finds the functions that > +have an argument type containing int; @samp{info fun -t '^int (' ^step} > +finds the functions whose names start with @code{step} and that are returning > +an int. s/are returning an int/return int/ Thanks, Pedro Alves > + > +If both @var{regexp} and @var{type_regexp} are provided, a function > +is printed only if it matches the two regexps. > + > + > @kindex info variables > -@item info variables > +@item info variables [-q] > Print the names and data types of all variables that are defined > outside of functions (i.e.@: excluding local variables). > The printed variables are grouped by source files and annotated with > their respective source line numbers. > > -@item info variables @var{regexp} > -Like @kbd{info variables}, but only print the names and data types of > -non-local variables whose names contain a match for regular expression > -@var{regexp}. > +The optional flag @samp{-q}, which stands for @samp{quiet}, disables > +printing header information and messages explaining why no variables > +have been printed. > + > +@item info variables [-q] [-t @var{type_regexp}] [@var{regexp}] > +Like @kbd{info variables}, but only print the variables selected > +with the provided regexp(s). > + > +If @var{regexp} is provided, print only the variables whose names > +contain a match for regular expression @var{regexp}. > + > +If @var{type_regexp} is provided, print only the variables whose > +types, as printed by the @code{whatis} command, contain a match > +for regular expression @var{type_regexp}. > +If @var{type_regexp} contains space(s), it should be enclosed in > +quote characters. If needed, use backslash to escape the meaning > +of special characters or quotes. > + > +If both @var{regexp} and @var{type_regexp} are provided, an argument > +is printed only if it matches the two regexps. > > @kindex info classes > @cindex Objective-C, classes and selectors >