public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Bruno Larsen <blarsen@redhat.com>
To: Rustam Kovhaev <rkovhaev@gmail.com>, gdb-patches@sourceware.org
Subject: Re: [RFC PATCH] gdb: add command to clear value history
Date: Wed, 19 Oct 2022 10:30:57 +0200	[thread overview]
Message-ID: <6e891af5-eb49-363f-a765-a22d7a048e12@redhat.com> (raw)
In-Reply-To: <20221019033925.86910-1-rkovhaev@gmail.com>


On 19/10/2022 05:39, Rustam Kovhaev via Gdb-patches wrote:
> Hello,

Hi Rustam!

Thanks for this patch! I am indifferent to the new command, as I never 
needed it but I can't see it impacting anything else, so I'm fine with 
it being added.

However, the command "clear" already exists. It clears all breakpoints. 
You could either add "values" as a subcommand to the existing command, 
by having it added around gdb/breakpoint.c:14434, but doing so might 
change how the bare "clear" command works (I'm not sure here), or add 
something like "values clear" instead, which I think it's a bit too big. 
This specific point I'll defer to other maintainers on helping you.

I also noticed a few specific things that I'll explain inline.

> While debugging an application I wanted to clear the value history and I
> could not find an option to do it.
> I might be the only one who gets lost in the value history and I am not
> sure if anyone else needs it, but I thought it would be nice to have it.
> And I hope this does not break anything.
> Please let me know what you think. Thanks!
>
> Let's have the functionality to clear the value history.
> Introduce 'set values clear' command to clear the value history.

GDB tends to prefer a more objective commit message style, even if it 
comes from a personal need. Your message is fine for the RFC but it 
needs to be iterated for it to go in. See commits 
e4014689b9a1b9aa0dde8f8a358401774566fe8b and 
70175292616118bad315296ba6180f375326bb6c for some exaples.

>
> Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
We don't really use Signed-off-by tags in GDB.
> ---
>   gdb/value.c | 16 ++++++++++++++++
>   1 file changed, 16 insertions(+)
>
> diff --git a/gdb/value.c b/gdb/value.c
> index 605e52dee82..726b5ef9084 100644
> --- a/gdb/value.c
> +++ b/gdb/value.c
> @@ -1971,6 +1971,15 @@ show_values (const char *num_exp, int from_tty)
>     if (from_tty && num_exp)
>       set_repeat_arguments ("+");
>   }
> +
> +static struct cmd_list_element *setvallist;
> +
> +static void
> +clear_values (const char *ignore, int from_tty)
> +{
> +    value_history.clear ();
> +}
> +
>   \f
>   enum internalvar_kind
>   {
> @@ -4343,6 +4352,13 @@ Convenience functions are defined via the Python API."
>   Elements of value history around item number IDX (or last ten)."),
>   	   &showlist);
>   
> +  add_cmd("clear", no_class, clear_values, _("\
> +Clear value history."), &setvallist);
You forgot to add a space before ( here.
> +
> +  add_basic_prefix_cmd ("values", class_support, _("\
> +Generic command for setting value history parameters"),
> +		  &setvallist, 0, &setlist);
> +

Since you are using &setvallist and &setlist here, your command ends up 
being "set values clear" instead of "clear values". You probably want to 
use &cmdlist instead.

>     add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\
>   Initialize a convenience variable if necessary.\n\
>   init-if-undefined VARIABLE = EXPRESSION\n\

It would be good if you added a test for this command. I think it would 
go well in gdb.base/printcmd.exp, adding some extra lines like

gdb_test_no_output "clear values" "test clearing values"
gdb_test "print 1" ".1 = 1" "test that values were cleared"


With all this being said, I like the direction of your patch, I hope to 
see it going upstream soon :-)

Cheers,
Bruno


  reply	other threads:[~2022-10-19  8:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-19  3:39 Rustam Kovhaev
2022-10-19  8:30 ` Bruno Larsen [this message]
2022-10-20 18:44 ` Tom Tromey
2022-10-23 19:53   ` Rustam Kovhaev

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=6e891af5-eb49-363f-a765-a22d7a048e12@redhat.com \
    --to=blarsen@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=rkovhaev@gmail.com \
    /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).