This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFAv3 0/5] info [args|functions|locals|variables] [-q] [-t TYPEREGEXP] [NAMEREGEXP]


[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 &reg 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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]