public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Andrew Burgess <andrew.burgess@embecosm.com>,
	gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH 3/3] gdb/mi: Add new commands -symbol-info-{functions,variables,types}
Date: Fri, 04 Oct 2019 03:01:00 -0000	[thread overview]
Message-ID: <32bedef4-727e-ad35-318b-8ebc18924583@simark.ca> (raw)
In-Reply-To: <bf4130022c1c3a92f8e328a898f5c36dd4009781.1569539198.git.andrew.burgess@embecosm.com>

On 2019-09-26 7:09 p.m., Andrew Burgess wrote:
> Add new MI commands -symbol-info-functions, -symbol-info-variables,
> and -symbol-info-types which correspond to the CLI commands 'info
> functions', 'info variables', and 'info types' respectively.

Hi Andrew,

The first thing I tried was to run it on GDB itself and run "-symbol-info-functions"
by itself.  Apparently, it tries to list all functions in the program :).  I think
we need to be careful with that, as it would be really easy for a debug session to
become unresponsive.  Imagine an IDE that has a little box to search symbols by name.
The user while debugging a big program, types "e<enter>", which generates this
MI command:

  -symbol-info-functions --name "e"

This would essentially hang the debug session while GDB expands all the symtabs with
at least a function with "e" in its name.  It would take a huge amount of time and
memory.  I don't know how easy it would be to implement, but for these cases, a
"--max-results N" switch, which would stop the search early, might useful.

Note that the same happens if you type "info functions" in the CLI.  But at least,
when using the CLI interactively, you can ctrl-C, which front-ends don't typically
do.

Also, since this output is meant to be consumed by a front-end, it would be
interesting to have the details of the symbols in separate fields.  For example,
for variables, have the type and name in separate fields.  This gives front-ends
more freedom on how to display them.

For functions, I would even see (maybe not in this patch though) a list of parameters
with their names and types.

Of course, we can always start with something basic and add fields as we go.

I didn't really look at the implementation, since it's getting a bit late, but:

> diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h
> index 91ce4cd4070..5fa4fafbb05 100644
> --- a/gdb/mi/mi-cmds.h
> +++ b/gdb/mi/mi-cmds.h
> @@ -94,6 +94,9 @@ extern mi_cmd_argv_ftype mi_cmd_stack_list_locals;
>  extern mi_cmd_argv_ftype mi_cmd_stack_list_variables;
>  extern mi_cmd_argv_ftype mi_cmd_stack_select_frame;
>  extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines;
> +extern mi_cmd_argv_ftype mi_cmd_symbol_info_functions;
> +extern mi_cmd_argv_ftype mi_cmd_symbol_info_variables;
> +extern mi_cmd_argv_ftype mi_cmd_symbol_info_types;

The last two are not in alphabetical order (in the .c as well).

Simon

  parent reply	other threads:[~2019-10-04  3:01 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-26 23:09 [PATCH 0/3] New MI commands for info functions/types/variables Andrew Burgess
2019-09-26 23:09 ` [PATCH 1/3] gdb: Don't print a newline in language la_print_typedef methods Andrew Burgess
2019-09-26 23:09 ` [PATCH 3/3] gdb/mi: Add new commands -symbol-info-{functions,variables,types} Andrew Burgess
2019-09-27  5:43   ` Eli Zaretskii
2019-10-04  3:01   ` Simon Marchi [this message]
2019-10-04 13:46     ` André Pönitz
2019-10-11 12:32     ` Andrew Burgess
2019-09-26 23:09 ` [PATCH 2/3] gdb: Split print_symbol_info into two parts Andrew Burgess
2019-10-04  1:50   ` Simon Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=32bedef4-727e-ad35-318b-8ebc18924583@simark.ca \
    --to=simark@simark.ca \
    --cc=andrew.burgess@embecosm.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).