Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Ingham <jingham@apple.com>
To: gdb@sources.redhat.com
Subject: Re: MI rules
Date: Wed, 29 Sep 2004 16:13:00 -0000	[thread overview]
Message-ID: <879F6C54-1232-11D9-A48C-00039379E320@apple.com> (raw)
In-Reply-To: <20040929025959.GA357@white>

Bob,

First, I think parts of the discussion are unclear because you are a 
little lax on terminology.  What you are calling asynchronous COMMANDS 
are really asynchronous NOTIFICATIONS.  They aren't the result of a 
command, but something that happens in gdb that gdb decides it ought to 
tell you about.  There are actually different mechanisms to emit them 
in gdb, so they are clearly separated in the code.

And yes, ALL asynchronous notifications need to be tagged.  I haven't 
played around with TOT without our modifications, so I can't actually 
tell you what the state is there, but if this isn't the case it 
certainly ought to be.  I would be surprised if they weren't, but...

About incompatible changes.  I see the need to have a stable version of 
the MI so that you can deliver a front end that will work with some 
reasonable range of gdb's.  OTOH, putting a whole lot of effort into 
making your front end work with every possible variant of the 
development versions of the MI seems to me like a misdirection of our 
limited resources. The current state falls short of your needs right 
now because you need to use the development version only, and until 
that is stable, you are in a bind.  But over designing for a side 
effect of the software not being all the way done is not as good a use 
of resources as actually getting a stable version that has what you 
need...

The thing I think we really need to work on (besides tagging 
notifications if there is any place they aren't tagged) is making the 
command INPUT more robust.  The output is already pretty good, there is 
seldom a need to remove fields, and adding fields is done in a way that 
the client can handle.  But the command input is not similarly 
self-labeling, and thus much more fragile.

Jim

On Sep 28, 2004, at 7:59 PM, Bob Rossi wrote:

> I have one quick note. I would prefer to get some cooperation with the
> MI maintainers. I seriously need this cooperation in order to get
> anything done with CGDB. Also, I consider the work I am doing necessary
> for any front end developer to be able to write a reasonable front end
> without having to heavily patch a version of GDB they distribute with.
>
> If you consider my goal worthy, please at least respond with some
> reasonable criticism so that these issues can be resolved. I feel that 
> in
> many ways my views on the MI are mostly ignored by the MI maintainers.
> I would like to improve GDB in the areas that seem relevant to front 
> end
> developers and am assuming that you all have the same goal. So
> hopefully these issues and the ones in the future can be resolved 
> within
> a reasonable amount of time.
>
>
> On Mon, Sep 27, 2004 at 10:38:55AM -0700, Jim Ingham wrote:
>>
>> On Sep 25, 2004, at 1:12 PM, Bob Rossi wrote:
>>
>>> On Sat, Sep 25, 2004 at 12:01:28PM -0700, Jim Ingham wrote:
>>>> I have no strong opposition to this, I just don't see the point.
>>>>
>>>
>>> Jim, I appreciate the time you have spent thinking about this issue 
>>> for
>>> me. I value the input from someone who has been working with MI for
>>> quite some time. I have several questions for you,
>>>
>>>   1. How do you figure out what type of asynchronous MI output 
>>> command
>>>   you just received is?
>>
>> There are two things here - there is asynchronous output from an MI
>> command, like stopped, running, etc.  We added "running breakpoint
>> command message so you can tell that it might start up again..."  This
>> sort of thing - usually from running.  They are always linked to the
>> original command by preserving the command token.  So that's easy.
>>
>> Then there is true asynchronous communications from the inferior -
>> unsolicited messages like shared library notification, or the fact 
>> that
>> a user command ("interpreter-exec") caused a breakpoint to be set, the
>> thread or the frame to be changed, etc...  These are all dealt with
>> just as you suggest for commands - they have a tag at the beginning
>> specifying the kind of event.  So for instance, when a shared library
>> gets loaded, we get:
>>
>> =shlibs-added,shlib-info=
>> [num="6",name="PBGDBIntrospectionSupport.A.dylib",kind="-",dyld-
>> addr="0x83d50000",reason="dyld",requested-
>> state="?",state="N",path="",description="/Developer/Applications/
>> Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/
>> PBGDBIntrospectionSupport.A.dylib",slide="",addr="",prefix=""]
>
> OK, so this is exactly what I'm talking about. There needs to be a 
> label
> for asynchronous commands. I guess it's not necessary for synchronous
> commands but I think it could be useful to have there anyways and it
> would be trivial to add.
>
>> Again, the truely unsolicited stuff (in this case the breakpoint
>> creation notification) is all tagged so the UI can figure out what is
>> going on.
>
> I think this also needs to be done in the mainline GDB and I would
> prefer the synchronous commands to get a tag also. Do you agree with 
> the
> asynchronous part at least?
>
>>>   2. How do you deal with your MI front end dealing with snapshots of
>>>   GDB? For example, it has new asynchronous commands, but the MI
>>> version
>>>   hasn't been bumped yet.
>>
>> There are two kinds of additions, right?  Command return fields, and
>> async notifications.  In Xcode,
>> the parser parses everything, and then any command return fields or
>> async notifications that it doesn't understand, it ignores.  That's
>> pretty much how the MI was designed, so that the MI can freely ADD
>> notifications & command return fields, and the UI can just ignore 
>> them.
>>  The fields are identified by field name, and the notifications by
>> their notification name.
>
> OK, so understood.
>
> Commands that add a field will definatly work because the front end
> ignores them. Commands that loose a field will probably cause a major
> problem and will be incompatible with the front end.
>
> What about when a command changes completly because of a version bump?
> What about when the commands changes (like N:M breakpoints) and the
> version is not bumped yet because you have a snapshot of GDB?
>
> I need these case's to work because I am not bundled with GDB.
>
> So again, I'm asking everyone,
>
> 1. Can the mainline version get tagged asyncronous commands at the 
> least?
> I would prefer every command to have a tag.
>
> 2. Can there be a discussion about backwards compatibility with MI
> output commands. This involves several issues I can think of.
>    1. removing fields from an MI output command
>    2. changing the output of an MI output command
>    3. Making the commands themselves be backwards compatible even
>    between major releases. This essentially makes the MI output version
>    useless.
>
> Thanks,
> Bob Rossi
>
--
Jim Ingham                                   jingham@apple.com
Developer Tools
Apple Computer


  reply	other threads:[~2004-09-29 16:13 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1095954341.19418.ezmlm@sources.redhat.com>
2004-09-23 18:23 ` Jim Ingham
2004-09-25  1:05   ` Bob Rossi
2004-09-25 19:01     ` Jim Ingham
2004-09-25 20:12       ` Bob Rossi
2004-09-27 17:39         ` Jim Ingham
2004-09-29  3:00           ` Bob Rossi
2004-09-29 16:13             ` Jim Ingham [this message]
2004-09-29 17:27               ` Bob Rossi
2004-09-30 13:26             ` Eli Zaretskii
2004-09-30 16:21               ` Bob Rossi
2004-09-30 16:36                 ` Andrew Cagney
2004-09-30 20:42                   ` Bob Rossi
     [not found] <5733AD9C-0CF7-11D9-8325-000A9569836A@brasko.net>
2004-09-23  0:31 ` Jason Molenda
2004-09-22 13:40 Fabian Cenedese
2004-09-22 13:48 ` Bob Rossi
2004-09-22 14:10   ` Fabian Cenedese
2004-09-22 14:43     ` Bob Rossi
2004-09-22 15:01       ` Fabian Cenedese
2004-09-22 14:58     ` Alain Magloire
2004-09-22 16:18       ` Bob Rossi
2004-09-22 16:59         ` Alain Magloire

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=879F6C54-1232-11D9-A48C-00039379E320@apple.com \
    --to=jingham@apple.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