Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Ingham <jingham@apple.com>
To: Bob Rossi <bob_rossi@cox.net>
Cc: Daniel Jacobowitz <drow@false.org>, gdb@sources.redhat.com
Subject: Re: MI query questions
Date: Tue, 30 May 2006 17:53:00 -0000	[thread overview]
Message-ID: <7A4B9D88-47FB-4721-949F-632AF2E449FC@apple.com> (raw)
In-Reply-To: <20060530171518.GB31100@brasko.net>

For that we added a "command_line_input_hook" which we run at the  
beginning of command_line_input in top.c.  We have an "mi running  
cli" version that we put in place when we run -interpreter-exec.   
This hook sends an async message like:

(gdb) set interpreter mi1
-interpreter-exec console "break raise"
[0] cancel
[1] all

Non-debugging symbols:
[2]    -[NSException raise]
[3]    raise
=read-one-line,prompt="> "

When the UI gets this, it can put up the prompt, and then send the  
next line of input when it gets one.  You have to do this not only  
for the break command, but also so things like:

-interpreter-exec console "define foo"

and

-interpreter-exec console "commands $bpnum"

work properly.

Looks like the hooks are all gone away from TOT gdb.  I'm not sure  
what is supposed to replace them in instances like this.  But anyway,  
something like this is what you will probably want to do.

Jim

On May 30, 2006, at 10:15 AM, Bob Rossi wrote:

> On Tue, May 30, 2006 at 09:59:55AM -0700, Jim Ingham wrote:
>> 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.
>
> What about the -interpreter-exec console "b A::func" case?
>
> Thanks,
> Bob Rossi


  reply	other threads:[~2006-05-30 17:41 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
2006-05-30 17:41     ` Bob Rossi
2006-05-30 17:53       ` Jim Ingham [this message]
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=7A4B9D88-47FB-4721-949F-632AF2E449FC@apple.com \
    --to=jingham@apple.com \
    --cc=bob_rossi@cox.net \
    --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