From patchwork Thu Jul 5 21:37:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 28250 Received: (qmail 126400 invoked by alias); 5 Jul 2018 21:37:37 -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 126304 invoked by uid 89); 5 Jul 2018 21:37:36 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.5 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.2 spammy=acquisition, Acquisition, grouped, Management X-HELO: mailsec101.isp.belgacom.be Received: from mailsec101.isp.belgacom.be (HELO mailsec101.isp.belgacom.be) (195.238.20.97) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 05 Jul 2018 21:37:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1530826653; x=1562362653; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=UEe1wBvGIM83vK97jSxQrLeaKnz7xAWE7drbwMz5gwI=; b=n0nC32u8IYDYWuOd06bNH5vVtNUSPIkJfNioOSFXnHp5FT+kMIQYD3bT d4/4awHhMTrCmJ2vBZdLm0OLJc2ZOA==; Received: from 224.41-64-87.adsl-dyn.isp.belgacom.be (HELO md.home) ([87.64.41.224]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 05 Jul 2018 23:37:24 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [RFA 4/6] Document changes to info [args|functions|locals|variables] Date: Thu, 5 Jul 2018 23:37:15 +0200 Message-Id: <20180705213717.302-5-philippe.waroquiers@skynet.be> In-Reply-To: <20180705213717.302-1-philippe.waroquiers@skynet.be> References: <20180705213717.302-1-philippe.waroquiers@skynet.be> X-IsSubscribed: yes Document changes to info [args|functions|locals|variables] gdb/doc/ChangeLog 2018-07-05 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 91ec219958..af79c79e3e 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -7705,15 +7705,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}. + +If @var{type_regexp} is provided, print only the arguments whose +types contain a match for regular expression @var{type_regexp}. +The matching is done with the argument type as printed by the +@code{whatis} command. +If @var{type_regexp} contains space(s), it should be enclosed in single +quote characters. + +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}. + +If @var{type_regexp} is provided, print only the local variables whose +types contain a match for regular expression @var{type_regexp}. +The matching is done with the local variable type as printed by the +@code{whatis} command. +If @var{type_regexp} contains space(s), it should be enclosed in single +quote characters. + +If both @var{regexp} and @var{type_regexp} are provided, a local variable +is printed only if it matches the two regexps. + +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 + @end table @node Frame Filter Management @@ -17665,32 +17723,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 contain a match for regular expression @var{type_regexp}. +The matching is done with the function type as printed by the +@code{whatis} command. +If @var{type_regexp} contains space(s), it should be enclosed in single +quote characters. +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. + +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 contain a match for regular expression @var{type_regexp}. +The matching is done with the variable type as printed by the +@code{whatis} command. +If @var{type_regexp} contains space(s), it should be enclosed in single +quote characters. + +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