This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH:MI] Event notification
- From: Vladimir Prus <vladimir at codesourcery dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Sun, 04 May 2008 15:30:56 +0400
- Subject: Re: [PATCH:MI] Event notification
- References: <18439.56134.456709.118980@kahikatea.snap.net.nz>
Nick Roberts wrote:
> This patch adds event notification for changes in selected frame and thread.
> In annotations, file and line information are output when the program stops and
> when the selected frame is changed, e.g., with "up" or "down". Currently in MI
> this information is only output for the former case. For threads, -thread-info
> doesn't give the selected frame and this may currently change when execution
> stops.
I think that when execution stops, all threads have frame 0 as selected, no?
> In any case, providing a notification it means that the frontend
> doesn't need to interrogate Gdb.
>
> A further advantage of using notifications is that they are output even when a
> CLI command is issued from the console. I've discussed these ideas on the
> mailing list before but not used observers and in the past I've got a bit hung
> up on trying to detect changes in stack (too difficult).
>
> I've not run the testsuite as I imagine it will break in many places. I want
> to get this idea of decoupling MI output from the input command accepted first.
> In this respect, it is somewhat similar to asynchronous output in asynchronous
> mode.
Some interesting questions arise, with the first one -- what is the exact
meaning of those new notifications and what is the expected reaction in frontend?
For example, suppose you have a bunch of fixed variable objects in different
threads. Then, -var-update * will switch between threads to evaluate the variable
objects. This, I think, will produce a bunch of thread change and frame change
notifications? What will frontend do? If a frontend updates the current
line indicator as result of those notifications, then "-var-update *" will
cause the line indicator to jump around in a fairly interesting way :-)
One way to address this is to suppress those notification for implicit
gdb activity. I don't see how we can easily do this. Another way would
be instruct the frontends to ignore those notifications during some commands.
But then, I'm not sure how to do this without creating a huge table of
commands that implicitly change thread/stack, and without running the risk
of making the frontend act funny if we forget a command, or unintentionally
make some other command switch thread/frames.
- Volodya