Date: Thu, 23 Jan 2003 11:49:44 -0500 From: Andrew Cagney To: rms@gnu.org Cc: hilfingr@CS.Berkeley.edu, vincent@waw.com, jimb@redhat.com, cagney@redhat.com, jtc@acorntoolworks.com, dewar@gnat.com, klee@apple.com, shebs@apple.com, toddpw@toddpw.org, Nick Roberts Subject: Re: obsoleting the annotate level 2 interface Message-ID: <3E301D28.3060504@redhat.com> References: <15917.39229.935851.920452@nick.uklinux.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-length: 4923 > Please don't drop the support for annotation level 2. > The new Emacs feature gdb-ui.el uses it. > > If in the future people want to adapt Emacs to use MI instead, that > would be ok. If Emacs is to use MI, it is essential to make the > command line work side by side with MI. This is very very unfortunate. The 5.1 release notes, from 2001-11-21 clearly read: > * The MI enabled by default. > > The new machine oriented interface (MI) introduced in GDB 5.0 has been > revised and enabled by default. Packages which use GDB as a debugging > engine behind a UI or another front end are encouraged to switch to > using the GDB/MI interface, instead of the old annotations interface > which is now deprecated. GDB developers are working to resolve all known issues with MI that would block EMACS(1). We really don't want to be in a situtation where we're forced to prop up the level two annotations. For the record. Eclipse is using MI and not annotations. The frustrations the Eclipse group stemed largly from a lack of communication, on their part, with the GDB group. Andrew (1) Two are known. The command line, and a tab-expand. > From: Nick Roberts > Date: Tue, 21 Jan 2003 19:02:21 +0000 > To: Jim Blandy > Cc: rms@gnu.org > Subject: obsoleting the annotate level 2 interface > In-Reply-To: > X-Spam-Status: No, hits=-5.4 required=5.0 > tests=IN_REP_TO,REFERENCES,SPAM_PHRASE_01_02 > version=2.41 > X-Spam-Level: > > > There is a mode in the Emacs CVS repository (gdb-ui.el) that I have written > (based on gdba.el by Tom Lord and Jim Kingdon) that uses annotation level 2. > I did try to use GDB/MI when I started writing it but gave up because it > wasn't complete at the time (March/April last year). There was some discussion > on the mailing list and I felt that the folks working on the Eclipse project > became similarly disillusioned (I think that they might also currently use > annotation level 2). Additionally there was a debate about whether the command > line interface would be suported through GDB/MI as Richard Stallman was > anxious to keep the GUD buffer. Also, I think that DDD uses annotation level 1. > > I had presumed that development on annotations had ceased and not that it > would be taken out. It has appeared quite robust to me and Andrew Cagney has > said as much. It would be a shame to lose it before GDB/MI has gained proven > acceptance. > > Anyway, I'm sure that Richard will have something further to add. > > Jim Blandy writes: > > > > GDB seems to support two different ways of doing detailed annotations > > of its output for consumption by other programs: MI and 'set annotate > > 2'. I don't think annotation level 2 has many active users, if any at > > all. It pervades GDB's code. Would it make sense to put 'set > > annotate 2' on the path to obsolescence? > > > > Some background: the 'set annotate' command sets the > > 'annotation_level' variable. There are only three distinguished > > values for this variable: > > > > 0: nothing special, GDB behaves normally. > > 1: in source.c:line_info and stack.c:print_frame_info, when we print > > the source line, we print out something extra that helps Emacs pop > > up the source code in a window. > > 2 or greater: we enable around 250 calls to a variety of functions in > > annotate.c to mark and identify lots of things GDB prints. > > > > I think we should keep level 1, since the standard Emacs GDB interface > > uses it, and it's not very much code. > > > > I'd like to see GDB dump level 2, since it duplicates MI, badly. MI's > > design ensures that whoever's trying to parse GDB's output gets > > something that's well-formed, whereas annotate just sticks escape > > codes into the outgoing stream of text. This means that, if you > > change the way anything prints, you may break an annotate level 2 > > client. But to break an MI client, you actually have to change a > > ui_out call, whose sole purpose is to produce output for clients to > > read. So MI is a much more maintainable approach, because it's easier > > for people to see what they're doing. > > > > If folks agree that annotate level 2 should go, we could: > > - announce that annotate level 2 will be disabled in the release after > > next; > > - in that release, disable the code, but leave it there, to see if > > anyone complains, and whether they can be persuaded to switch to MI; > > and > > - in the release after that, if all goes well, remove the code to > > support annotation level 2. > > > > Personally, I'd like to see Emacs switch from annotation level 1 to > > MI, too; then we could get rid of annotation altogether. But I think > > it makes sense to tackle level 2 first, since I don't think it has > > many users (if any). > > > > >