Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Andrew STUBBS <andrew.stubbs@st.com>
To: Eli Zaretskii <eliz@gnu.org>, Andreas Schwab <schwab@suse.de>,
		gdb@sources.redhat.com
Subject: Re: Strangeness in set command
Date: Mon, 07 Apr 2008 18:32:00 -0000	[thread overview]
Message-ID: <47FA0698.3060009@st.com> (raw)
In-Reply-To: <20080405185423.GB13805@caradoc.them.org>

Daniel Jacobowitz wrote:
> On Sat, Apr 05, 2008 at 08:12:43PM +0300, Eli Zaretskii wrote:
>> Does anyone object to improving the error message to mention "set
>> variable"?
> 
> I don't think it will help; it's just luck you got an ambiguity since
> there are two commands starting with s.  You could get any number of
> other errors, or even silent success.  Like:
> 
> (gdb) set ser.a = 1
> Undefined set serial command: ".a = 1".  Try "help set serial".
> (gdb) set args.a = 1
> (gdb) show args
> Argument list to give program being debugged when it is started is ".a = 1".

This has been bugging me for some time. Not just for interactive use, 
but also because it's quite easy to write scripts which work now, but 
might fail unexpectedly in future versions of GDB.

E.g.

(gdb) set index = 1

There's no GDB command "set index", so this sets a program variable, 
which is probably what the user intended. However, can you say for sure 
GDB will never use this name? It's exactly the sort of useful name that 
would find a use, and when it does a script with this command will go wrong.

Perhaps the best solution would be to print an expanded version, thus 
making it explicit what is going on.

E.g.

(gdb) set ser.a = 1
=> set serial .a = 1
Undefined set serial command: ".a = 1".  Try "help set serial".
(gdb) set args.a = 1
=> set args .a = 1
(gdb) show args
Argument list to give program being debugged when it is started is ".a = 1".

(gdb) set index = 1
=> set variable index = 1

I wouldn't recommend printing the command when no expansion is performed 
- that would really annoy me, especially when sourcing scripts - but I 
would suggest extending the feature to commands in scripts. Scripts 
could be silenced simply by making them explicit. This would encourage 
people to future proof their scripts.

Naturally, there would have to be a way to make the messages go away.

Just a thought

Andrew


  reply	other threads:[~2008-04-07 11:34 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-05 16:49 Eli Zaretskii
2008-04-05 16:56 ` Andreas Schwab
2008-04-05 18:54   ` Eli Zaretskii
2008-04-07  8:47     ` Daniel Jacobowitz
2008-04-07 18:32       ` Andrew STUBBS [this message]
2008-04-07 19:28       ` Michael Snyder
2008-04-07 19:37         ` Eli Zaretskii
2008-04-08 20:38           ` Andrew STUBBS
2008-04-08 20:45             ` Eli Zaretskii
2008-04-09  0:35               ` Doug Evans
2008-04-09  0:44             ` Michael Snyder
2008-04-09 17:24         ` Tom Tromey
2008-04-09 17:36           ` Michael Snyder

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=47FA0698.3060009@st.com \
    --to=andrew.stubbs@st.com \
    --cc=eliz@gnu.org \
    --cc=gdb@sources.redhat.com \
    --cc=schwab@suse.de \
    /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