This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Queries in MI


Seems to me like the need for query responses from the Front End comes in two categories. One is things that are predictable, like the question "do you want to set undefined breakpoints". Or when you re-run with the executable still running and gdb asks whether you want to terminate the target. In these cases, the MI command should be crafted to allow the FE to select one choice or the other, and the default should be something reasonable. There's no reason to support a query here, the FE should be able to figure out what it wants in advance and just do it.

The other is when the Front End can't a priori know enough to make a decision. The only example we've come across so far is with breakpoints that resolve to multiple choices. In that case, what we do is we don't set any breakpoints, but return a list of choices to the UI instead. Then I've tarted up the -break-insert so that it will take a selection list as well, and if the selection list is there, it will choose those options from the list. What we did is a little weak in that I don't verify that the breakpoint expression you send back with the selection list is the same as the one you sent when I generated the list. But that was complicated to do, and I was pretty sure we could trust the FE not to willfully shoot itself in the foot here...

This way, we don't have to keep stateful interactions suspended between the UI & the FE, which seemed a more robust design to me.

I don't think I see any cases of queries that can't be handled this way.

Of course, you have to make sure that commands issued with "- interpreter-exec console" return the queries to the console properly, that's a separate issue. That works in our gdb, but I don't remember whether Keith, Elena et al merged all this stuff over or not.

Jim

On Jul 7, 2005, at 1:16 AM, gdb-digest-help@sources.redhat.com wrote:




I'm not sure what you're suggesting, but Emacs will always want to allow
CLI input through the GUD buffer which, for example, will be forwarded to
GDB as:


-interpreter-exec console "b asdf"


Of course. Your stating the case when the user sends a command to GDB and get's a query as a response. That's fine.

What about the case when the FE sends a command to GDB and has to deal
with the query? That isn't capable with the current output. The MI
response would have to have the query information built into it, like,


-break-insert "b asdf"
^done,query={choice1="...",choice2="..."}
FE sends->choice1
...


Well "b asdf" is a CLI command, but I take your point. Currently, if asdf is
symbol that is in a shared library that is yet to be loaded, then


(gdb)
-break-insert asdf
&"Function \"asdf\" not defined.\n"
^done
(gdb)

This is the opposite behaviour to -interpreter-exec console "b asdf"
and the same as you would you would get using CLI with "set confirm off".



I currently don't have a need for such a feature, but I'm just
suggesting that the current mechanism doesn't allow the FE to do this
sort of thing nicely. I'm sure it will be needed eventually.


You're suggesting a syntax. I'm not sure what the mechanism should be,
because if GDB is made to wait for a response that might break other
things.


Nick



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]