Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Ingham <jingham@apple.com>
To: Alain Magloire <alain@qnx.com>
Cc: gdb@sources.redhat.com
Subject: Re: Queries in MI
Date: Fri, 08 Jul 2005 17:39:00 -0000	[thread overview]
Message-ID: <B2010D9D-D1D3-4EBD-B196-F09BBAD027A0@apple.com> (raw)
In-Reply-To: <1578FF984ABAD411AFA5000102C4BB5B115961DA@NIMBUS>

Oops, I beg your pardon.  Apparently we didn't implement this for query.

The area we did implement user input for was the "command" and  
"define" commands.  I don't remember now why we didn't use the same  
mechanism for query, it would have been easy to do that...  Anyway,  
for "command" it looks something like:

-> 81-interpreter-exec console-quoted "commands 1"
<- (gdb)
<- =read-one-line,prompt=">"
->  print self
<- =read-one-line,prompt=">"
-> end
<- 81^done,time= 
{wallclock="7.87027",user="0.00050",system="0.00040",start="1120843556.1 
42967",end="1120843564.013233"}

This is the log format that Xcode spits out.  The lines with the ->  
are commands sent to gdb.  The lines with the <- lines sent back to  
Xcode.  The request for a line of input is an asynchronous message  
from gdb, which seems correct to me.

We do this by hooking into the "command_line_input hook".  I don't  
remember now why we didn't do the same thing for the query_hook.   
Probably we just forgot.

Jim

On Jul 8, 2005, at 9:36 AM, Alain Magloire wrote:

>
>
>
>> -----Original Message-----
>> From: gdb-owner@sources.redhat.com [mailto:gdb- 
>> owner@sources.redhat.com]
>> On Behalf Of Jim Ingham
>> Sent: Thursday, July 07, 2005 2:10 PM
>> To: gdb@sources.redhat.com
>> Subject: 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.
>>
>>
>
> Good question...
> But it this case what we ending doing is check for the prompt(the  
> secondary
> prompt, usually ">") and allow the user to finish by entering commands
> Without any interpretation. This very weak and prone to since for that
> case we our at the mercy of the user to finish the sequence, any other
> Command form the FE will interfere with this.
> It would be nice for the next version of MI to handle this a little  
> more
> Elegantly.  Based on you experience with MI did you have any  
> thoughts ?
>
>
>> 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
>>>
>


  reply	other threads:[~2005-07-08 17:39 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-08 16:37 Alain Magloire
2005-07-08 17:39 ` Jim Ingham [this message]
     [not found] <1120724185.29158.ezmlm@sources.redhat.com>
2005-07-07 18:10 ` Jim Ingham
  -- strict thread matches above, loose matches on Subject: below --
2005-07-06 13:14 MI usage inside a user-defined commands Daniel Jacobowitz
2005-07-06 13:46 ` Karganov Konstantin
2005-07-06 21:26   ` Nick Roberts
2005-07-06 21:28     ` Daniel Jacobowitz
2005-07-06 22:50       ` Queries in MI [was Re: MI usage inside a user-defined commands] Nick Roberts
2005-07-06 23:46         ` Bob Rossi
2005-07-07  0:33           ` Queries in MI Nick Roberts
2005-07-07  1:34             ` Bob Rossi
2005-07-07  3:32               ` Nick Roberts

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=B2010D9D-D1D3-4EBD-B196-F09BBAD027A0@apple.com \
    --to=jingham@apple.com \
    --cc=alain@qnx.com \
    --cc=gdb@sources.redhat.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