From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25764 invoked by alias); 4 Feb 2003 12:44:39 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 25755 invoked from network); 4 Feb 2003 12:44:36 -0000 Received: from unknown (HELO white) (68.14.146.65) by 172.16.49.205 with SMTP; 4 Feb 2003 12:44:36 -0000 Received: from bob by white with local (Exim 3.35 #1 (Debian)) id 18g2RH-0000mf-00 for ; Tue, 04 Feb 2003 07:44:35 -0500 Date: Tue, 04 Feb 2003 12:44:00 -0000 From: Bob Rossi To: gdb@sources.redhat.com Subject: obsoleting annotate level 2 Message-ID: <20030204124435.GB2565@white> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i X-SW-Source: 2003-02/txt/msg00070.txt.bz2 Hi, I have been writing a front end to gdb called cgdb. It depends on gdb's annotate level 2 feature. This project can be downloaded at cgdb.sourceforge.net. Before that it was hosted at tgdb.sourceforge.net. It is a curses front end to gdb that is intended to be lightweight and responsive. I originally wrote cgdb because I use gdb, sometimes for several hours, during the day at work. We use GNAT's version of gdb which seems to be behind GNU ( As far as version and features ). I decided to make it a curses front end because there are many times during the day when I ssh into a window's box using cygwin. At the time I started developing cgdb ( about 8 month's ago ). I began looking into how to interface with gdb without losing any of the command line power. I began looking into how other debugger's did it. So I soon realized that xxgdb, ddd and gvd all used annotate level 1. I then did a little more research and discovered http://www.gnu.org/manual/gdb/html_chapter/gdb_21.html#SEC203 which encouraged me to use annotate level 2. Since even NOW, the manual says nothing about annotate level 2 being deprecated, but describes how to use the annotations. I used annotate 2 to interface to gdb for several reasons: 1. gdb-mi is not in older versions of gdb. Including GNAT's version of gdb ( which we use at work ). If I wrote a front end using this the gdb-mi feature of gdb, I would not be able to debug programs with GNAT, cygwin, red-hat, suse ... out of the box distributions. This seems UNACCEPTABLE. 2. gdb-mi does not have readline support at the command line. This is an important feature if the GUI wants to keep gdb's useful command line feeling 100%. 3. gdb-mi did not ( at the time ) support the CLI commands. 4. annotate level 2 gave much more information to the GUI over annotate level 1. Including: 1. When the user is interfacing with the readline library. 2. When the breakpoints need to be checked (instead of every time). 3. The prompt can change. the debugged program can output the string '(gdb) ' to stdout without breaking the GUI. 4. I was able to allow the user to communicate with the debugged program, no matter how the debugged program sets the terminal. ex. ( cbreak, raw ...) I feel that cgdb should be separated from gdb for several reasons: 1. cgdb should support a rich variety of options including 1. macro support 2. key bindings that do not have to be Emacs style 3. configuration file for syntax color support ... 4. regular expression searching 5. many more options that can make cgdb easier to use. 2. Users should not have to recompile gdb to get curses support. 3. I can write cgdb knowing nothing about the internals of gdb, without sacrificing the risk of bugs in gdb for a GUI. With these things in mind, I understand that gdb must move on. With or without cgdb. Eventually cgdb will support gdb-mi. My only claim is that gdb keep supporting annotate level 2 until it is ready to remove both annotate level 1 and 2. This way when other programs like gvd, ddd and xxgdb are rewritten to use gdb-mi and not annotate level 1, then programs like cgdb and possibly others can be rewritten as well. I know these programs will use gdb-mi when it is stable and ready. Util then, I don't think annotate level 1 or 2 should be removed since there are existing front ends to gdb that use them. I believe this is fair. In fact, I am even willing to support annotate level 2 if necessary. I know I have no association with GNU, but I would be willing. Thanks, Bob Rossi