Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Ingham <jingham@apple.com>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb@sources.redhat.com
Subject: Re: MI query questions
Date: Tue, 30 May 2006 17:15:00 -0000	[thread overview]
Message-ID: <EABAB67C-AAB4-44A8-AC4F-11DBAEBB9A40@apple.com> (raw)
In-Reply-To: <20060529144640.GA12145@nevyn.them.org>

What we did for this is along the lines Daniel suggested.  When we  
find multiple matches to a breakpoint, we return "matches", and then  
a list of matches, something like:

^done,matches={b={index="0",canonical="-[NSException raise]",binary="/ 
System/Library/Frameworks/Foundation.framework/Versions/C/ 
Foundation",line="0",addr="0x9294d008"},b= 
{index="1",canonical="raise",binary="/usr/lib/ 
libSystem.B.dylib",line="0",addr="0x9012f940"}}

Then you have to provide some way for the UI to turn around and set  
the breakpoints it wants to set.  You aren't really guaranteed that  
the UI will know how to cons up a breakpoint expression that will  
return the breakpoint you want.  We tried using the canonical form,  
and with that and the shared library you could do it mostly, except  
if we start doing things like template breakpoints.  So we added a -l  
option to -break-insert that takes a list of the indices and sets the  
breakpoints for that list.

It might have been cleaner to tie the list to the original -break- 
insert command, like having -break-insert pass back a cookie along  
with the matches, and then do:

-break-confirm <cookie> <list>

But I wanted to keep it stateless to make the implementation in gdb  
simpler.  So the UI just sends the -break-insert twice, the second  
time with the list.  You can also send "-1" for the list, and we will  
automatically accept all the breakpoints.

Jim


On May 29, 2006, at 7:46 AM, Daniel Jacobowitz wrote:

> On Mon, May 29, 2006 at 08:23:37AM -0400, Bob Rossi wrote:
>> The first small issue is that the '[1] all\n' choice is on the same
>> line as the [0] choice.
>
> That's because the ~"" blocks come from individual calls to printf.
>
>> The second issue is how GDB outputs a final ">" line. This isn't a  
>> valid
>> GDB/MI Output record/command. At least, I don't think it is. If I  
>> select
>> an option, then I get this
>
>> Which looks pretty good to me. So the problem is, the line ">"
>> apparently means to get input from the user. This isn't specified  
>> in the
>> MI OUTPUT record. Should we change the OUTPUT record to represent
>> interactive commands?
>
> I don't really think we should shoehorn these queries into MI.  It
> would make more sense to me to have it do something MI-like.  For
> example, not set any breakpoint, but return a more exact list of  
> places
> the breakpoint could be placed.  If you want the query behavior, you
> could of course use interpreter-exec :-)
>
> I dunno what that new response would look like, and I'm not especially
> interested in working it out; just sharing my opinion.  The > bit is
> very un-MI, and e.g. it prevents pipelining MI commands.
>
> -- 
> Daniel Jacobowitz
> CodeSourcery


  reply	other threads:[~2006-05-30 17:00 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-30  3:48 Bob Rossi
2006-05-30  8:20 ` Daniel Jacobowitz
2006-05-30 17:15   ` Jim Ingham [this message]
2006-05-30 17:41     ` Bob Rossi
2006-05-30 17:53       ` Jim Ingham
2006-05-30 17:55         ` Jim Ingham
2006-05-30 17:55           ` Bob Rossi
2006-05-30 18:12             ` Daniel Jacobowitz
2006-05-30 20:14             ` Jim Ingham
2006-05-30 18:27               ` Bob Rossi
2006-05-30 18:56                 ` Jim Ingham
2006-05-30 20:46                   ` Bob Rossi
2006-05-30 21:11                     ` Jim Ingham
2006-05-30 21:15                       ` Daniel Jacobowitz
2006-05-30 21:30                         ` Jim Ingham
2006-05-31  9:38                           ` Daniel Jacobowitz
2006-05-31 13:27                             ` Bob Rossi
2006-05-30 17:00 ` Nick Roberts
2006-05-30 17:32   ` Bob Rossi
2006-05-31 10:29     ` Nick Roberts
2006-05-31 13:25       ` Bob Rossi
2006-06-01  0:58         ` 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=EABAB67C-AAB4-44A8-AC4F-11DBAEBB9A40@apple.com \
    --to=jingham@apple.com \
    --cc=drow@false.org \
    --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