From: Tom Tromey <tromey@redhat.com>
To: Yao Qi <yao@codesourcery.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH 1/6] new observer command_option_changed.
Date: Wed, 25 Jul 2012 14:44:00 -0000 [thread overview]
Message-ID: <87hasvlx45.fsf@fleche.redhat.com> (raw)
In-Reply-To: <1452365.122ECxjKta@qiyao.dyndns.org> (Yao Qi's message of "Wed, 25 Jul 2012 11:56:29 +0800")
>>>>> "Yao" == Yao Qi <yao@codesourcery.com> writes:
Yao> The general goal of my work is that "when the internal state of GDB
Yao> is changed, and MI frontend and/or telnet session is not aware of
Yao> the change, notify them to keep their display up to date".
I'm fully on board with this plan.
Yao> What do you mean by "add a Python hook"?
Sorry, I wasn't clear.
Suppose we want to add a new Python event so that Python code can also
detect parameter changes. My supposition is that in this case we'd want
to not filter, and just watch them all.
Yao> In terms of bandwidth, every "=option-changed" is sent once user
Yao> types command in console, user can't enter many commands at one
Yao> moment (one command per second and ten commands at most, I think).
Yao> This notification should not occupy much bandwidth.
In that case, why not just report them all?
I agree with your thinking here, that the rate is going to be quite
low. I'm not sure why I didn't realize that yesterday :)
Reporting them all means simpler code on the gdb side and also lets us
avoid the new set/show constructors. I don't see a downside.
Tom> What happens in the case where an option has a validation function that
Tom> fails? IIRC gdb has an internal design flaw here.
Yao> If I understand you correctly, "validation function" means cli/cli-
Yao> setshow.c:parse_binary_operation and cli/cli-
Yao> setshow.c:parse_auto_binary_operation. When validation fails, an error is
Yao> thrown out, and observer is not called.
Sorry again for the lack of clarity.
I mean the call to c->func at the end of do_setshow_command.
There are various spots in gdb that use a hidden variable to keep the
"real" setting in case setting the value here fails.
For example, try "set input-radix 1". This is an error, but I think
with your patch the MI client will see a notification saying that it was
changed to "1".
The design flaw here is that "set" functions do their validation after
the setting has been made, not before.
One approach to this would be to fix this design flaw. That's likely to
be a lot of work...
Another approach might be to move the observer notification later.
Tom
next prev parent reply other threads:[~2012-07-25 14:44 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-24 16:11 [RFC 0/6] MI notification of command option change Yao Qi
2012-07-24 16:11 ` [PATCH 4/6] new add_setshow_enum_cmd_with_notif and scheduler-locking Yao Qi
2012-07-24 20:50 ` Tom Tromey
2012-07-26 15:41 ` Pedro Alves
2012-07-24 16:11 ` [PATCH 2/6] allow to suppress more mi notification Yao Qi
2012-07-24 20:40 ` Tom Tromey
2012-07-26 15:30 ` Pedro Alves
2012-07-27 2:57 ` Yao Qi
2012-07-27 13:27 ` Pedro Alves
2012-07-24 16:11 ` [PATCH 1/6] new observer command_option_changed Yao Qi
2012-07-24 20:39 ` Tom Tromey
2012-07-25 3:56 ` Yao Qi
2012-07-25 14:44 ` Tom Tromey [this message]
2012-07-26 15:21 ` Pedro Alves
2012-07-25 14:32 ` Tom Tromey
2012-07-26 8:55 ` Yao Qi
2012-07-24 16:11 ` [PATCH 6/6] new add_setshow_string_cmd_with_notif and trace-notes Yao Qi
2012-07-24 20:54 ` Tom Tromey
2012-07-24 16:11 ` [PATCH 3/6] attach to command_option-changed observer Yao Qi
2012-07-24 17:10 ` Eli Zaretskii
2012-07-24 20:47 ` Tom Tromey
2012-07-26 12:47 ` Yao Qi
2012-07-26 13:59 ` Tom Tromey
2012-07-26 15:31 ` Pedro Alves
2012-07-24 16:12 ` [PATCH 5/6] new add_setshow_boolean_cmd_with_notify and circular-trace-buffer Yao Qi
2012-07-24 20:53 ` Tom Tromey
2012-07-27 15:23 [RCF 0/6 V2] MI notification of command option change Yao Qi
2012-07-27 15:23 ` [PATCH 1/6] new observer command_option_changed Yao Qi
2012-07-27 17:56 ` Tom Tromey
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=87hasvlx45.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=yao@codesourcery.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