From: Jim Ingham <jingham@apple.com>
To: Bob Rossi <bob_rossi@cox.net>
Cc: gdb@sources.redhat.com
Subject: Re: MI query questions
Date: Tue, 30 May 2006 17:55:00 -0000 [thread overview]
Message-ID: <DD27DB7B-9CDD-4E98-85F5-FB33121A48E7@apple.com> (raw)
In-Reply-To: <7A4B9D88-47FB-4721-949F-632AF2E449FC@apple.com>
Actually, to avoid confusion, this really looks like:
(gdb) set interpreter mi1
-interpreter-exec console-quoted "break raise"
~"[0] cancel\n[1] all\n"
~"\nNon-debugging symbols:\n"
~"[2] -[NSException raise]\n"
~"[3] raise\n"
=read-one-line,prompt="> "
In our version of gdb the console interpreter really is the straight
CLI console interpreter - this is required to get the "set
interpreter" command to work. So we had to invent another
interpreter that did the proper quoting. Anyway, this is what it
would look like for you...
Jim
On May 30, 2006, at 10:41 AM, Jim Ingham wrote:
> 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
>
next prev parent reply other threads:[~2006-05-30 17:49 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
2006-05-30 17:55 ` Jim Ingham [this message]
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=DD27DB7B-9CDD-4E98-85F5-FB33121A48E7@apple.com \
--to=jingham@apple.com \
--cc=bob_rossi@cox.net \
--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