From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 85558 invoked by alias); 23 Sep 2018 21:42:20 -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 85548 invoked by uid 89); 23 Sep 2018 21:42:20 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-6.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=blank, specify X-HELO: mailsec102.isp.belgacom.be Received: from mailsec102.isp.belgacom.be (HELO mailsec102.isp.belgacom.be) (195.238.20.98) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 23 Sep 2018 21:42:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1537738939; x=1569274939; h=from:to:subject:date:message-id; bh=h1Yb0hNh/96sn85JjE0E56lKvsW5ayGYD6lm2tvtSeM=; b=Bs4OQhNXuciCX2AaGb1mOY+GiMYgRv5EMCuFg4PHJOo8leBpUmzHOS5P oY+9y5uldQ87Yh9EG8JyDjPC5qlYuA==; Received: from 148.211-243-81.adsl-dyn.isp.belgacom.be (HELO md.home) ([81.243.211.148]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 23 Sep 2018 23:42:17 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Subject: [RFAv3 0/5] info [args|functions|locals|variables] [-q] [-t TYPEREGEXP] [NAMEREGEXP] Date: Sun, 23 Sep 2018 21:42:00 -0000 Message-Id: <20180923214209.985-1-philippe.waroquiers@skynet.be> X-IsSubscribed: yes X-SW-Source: 2018-09/txt/msg00786.txt.bz2 [RFAv3 0/5] info [args|functions|locals|variables] [-q] [-t TYPEREGEXP] [NAMEREGEXP] RFAv3, handling the comments of Tom and Eli about RFAv2. -------------------------------------------------------- * code changes: - reworked extract_arg_maybe_quoted to have it working the same way as gdb_argv. In another patch series, I will evaluate more in detail handling quoting/escaping inside extract_arg, by analysing all callers. - fixed (and tested) regression when NAMEREGEXP arg contains spaces. - replaced INFO_PRINT_ARGS_HELP by function info_print_args_help to make this gettext friendly. - instead of preg/treg regexp new arguments to iterate_over_block_arg_vars and iterate_over_block_local_vars, have preg/treg being part of the opaque cb_data, and do filtering inside do_print_variable_and_value. - no need anymore to include gdb_regex.h in various files or stack.h. - used preg/treg.has_value() instead of implicit conversion to boolean. - used *reg instead of ® for an out parameter. - handled language specific type printing using set_language and RAII. - no new line after return type for function declaration. * documentation changes: - handled the comments of Eli: rephrase two sentences as one, remove redundant blank before :. - quoting/backslash handling of TYPEREGEXP slightly updated according to the switch to gdb_argv quoting behaviour. Changes between the first RFA and RFAv2: --------------------------------------- The documentation parts were already reviewed by Eli, other parts were not reviewed yet. Compared to the first RFA, the changes are a rebase to the last trunk version, the removal of an unused local variable, and some updates to the new info_qt.exp test to ensure unicity of test names. Changes between first RFA and the RFC: --------------------------------------- * Handled comments of Eli on the documentation. * ChangeLog entries added in commit messages * Test added. Thanks. This patch series adds flags and/or arguments [-q] [-t TYPEREGEXP] [NAMEREGEXP] to the commands info [args|functions|locals|variables] The additional arguments allow to more precisely specify what to print. As these new features can usefully be combined with frame apply and thread apply, the documentation gives examples combining the above and the 'thread apply' and 'frame apply' commands. Some examples: * print functions returning an int: info functions -t '^int (' * print local variables having pthread_t type info locals -t pthread_t * print global variables having type 'struct addrinfo' info var -t 'struct addrinfo' * print args that are likely file descriptors info arg -t int .*fd.* Below examples are combined with the 'thread/frame apply' commands: * Assuming lock_something_t is an RAII type, show all locks: thread apply all -s frame apply all -s info locals -q -t lock_something_t or shorter equivalent: tfaas i lo -q -t lock_something_t * show frames and args having an arg with type matchin std::.*map so likely std::map or std::unordered_map frame apply all -s info args -q std::.*map The code, documentation, NEWS, test and ChangeLog are complete.