This is the ddd_debug product version v2_1. It contains the Data Display Debugger (ddd) version 2.1 from http://www.cs.tu-bs.de/softech/ddd/ which requires an X window terminal to be useful, and can act as a front end for either gdb from the (gdb product) or dbx (from the vendor's compiler suite). The changes from previous ddd versions are listed below; the last Fermilab release of ddd was bundled with the gcc product, and was ddd version 1.4d DDD News -*- text -*- ******** DDD 2.1 ------- DDD 2.1 brings alias detection, local variable displays, button and value tips as well as several new features and bug fixes. User-visible changes to DDD 2.0: - Alias detection. DDD now recognizes that multiple displays reference the same object. This allows the examination of shared data structures (circular lists, DAGs, and so on). Alias detection slows down DDD a bit, so it is turned off by default. - Local variable displays. You can display all local variables and arguments in the data display. The display is automatically updated to reflect the list of variables and their values. - Status displays. You can now view the output of a debugger command in the data window, using "graph display `COMMAND`". For instance, local variable displays are realized via "graph display `info locals`". - Button tips. Moving the mouse pointer over a button causes a small hint window (aka `balloon help') to raise. (optional) - Value tips. Moving the mouse pointer over a variable causes a small window to raise showing the current value. (optional) - The status line has been reworked and extended: * It displays information about the selected item. * It has moved to the bottom, such that menu entries can be described. (can be restored) * It contains a debugger status indicator, blinking whenever the inferior debugger is busy. (can be turned off) * You can re-display the most recent messages. - The register window can display floating-point registers. - Thread support. You can inquire existing threads and switch among them. (requires GDB and operating system thread support) - In `one single window' mode (now default), you can disable specific window parts (e.g. data displays, debugger console, etc.) through the `Windows' menu. - The `Preferences' panel has been extended and reworked: * Button tips and value tips can be enabled and disabled. * Tab width and graph grid size can now be changed at run time. * You can choose at run time whether command buttons should be placed in the command tool (as in DDD 2.0) or in the source window (as in DDD 1.x). * You can reset the DDD preferences to the least recently saved settings. - Some items have been renamed for clarity: * The `Stack' menu is now named `Status', as it hosts other status-related items besides backtrace and registers. * The `Break' button is now named `Interrupt' (as in DDD 1.x), to avoid confusion with the `Break At' button. * The `Quit' menu item is now named `Abort', to avoid confusion with the `Exit' menu item (which issues a `quit' command). - Some key bindings have been re-assigned. Generally, `Ctrl' invokes debugger or editing commands, and `Alt' changes debugger settings. Hence, Ctrl+M invokes `make' and Ctrl+Q invokes `quit', while Alt+M enables or disables the machine code window. `Run' is now on Ctrl+X (for eXecute). - DBX settings can now be viewed and changed at run time, using the `Settings' panel. - In GDB, there is a `status displays' panel for displaying various things about the program being debugged. - Reading the VSL library is now realized as a background job, reducing startup time drastically. - In the data window, the middle mouse button now toggles the display selection instead of simply extending it. - The most important data window operations can now also be invoked via the debugger console. For instance, the command `graph display *next at (50, 50) dependent on 1' creates a new dependent display at (50, 50). In the long term, this feature will be used to save and restore display state. - In the debugger console, the right mouse button invokes a small popup menu which you can use to clear the line or the window. - Ever suffered from a frozen display while debugging a modal application? If the debugged program is interrupted in some modal state, DDD will automatically make it ungrab the pointer. - You can now clear all argument fields `()' by clicking on the prompt `():'. - In the source argument field `()', pressing RETURN activates the `Lookup ()' button. - `Save Options' saves window sizes for later DDD sessions, as well as the relative position of the command tool. - Unnecessary redisplays have been significantly reduced, causing much less flickering. - If you specify some overloaded or ambiguous identifier, DDD now lets you select from all alternatives. - Buttons not supported on certain debuggers (for instance, `Finish' on DBX) are now made insensitive. (optional) - You can now invoke `make' from DDD, reusing old `make' arguments from the command history if desired. - There is a new integrated manual browser showing manual pages and info files for DDD as well as for the inferior debugger. A simple search facility is also included. Documentation: - The PostScript copy of the manual has been enriched with more than 30 color screen shots showing DDD usage. - A `sample.dddinit' file is included in the distribution containing several examples for further customization. Changes in configuration and building: - DDD 2.1 uses improved configuration checks from Autoconf 2.12. - DDD no longer installs in the `gcc' location by default, but in an existing DDD location; otherwise, in `/usr/local/bin'. - Improved means of determining builder's e-mail address. - DDD beta releases and DDD snapshots expire after a few weeks. Bug fixes: - Using DBX, comments were stripped from source code under certain circumstances. Fixed. - The sash to resize the assembler window is back again. - With XDB, sources are found in alternate directories, too. - With DBX, the current source line was omitted from the listing under certain circumstances. Fixed. - With Sun DBX, DDD uses the DBX display numbers instead of generating own numbers. - `Help on Version' no longer includes the entire DDD configuration. - Several single-letter options like `-d DIR' are now properly passed down to the inferior debugger. - `Select All' followed by `Delete' no more causes DDD to crash. - Problems with button specs ending in `...' have been fixed. - Line continuations (i.e. lines ending in `\') are properly handled. - Problems in building the `vsl' and `test-graph' programs are fixed. - On Linux, drag-and-drop of pixmaps has been disabled explicitly. (Several Linux Motif configurations are broken in this aspect.) - DDD now sets the WM_COMMAND resource such that X session managers can save and restore DDD state. - The data window now uses a command queue for operations on data displays. No more `The debugger is busy' messages. - Improved handling of template-generated class names and optimized-out structs. - And again, dozens of minor bug fixes and improvements. Release policy: - Due to the large amount of testing, we make new DDD releases only every six months or so. If you found a bug and fixed it for us or just reported it to us so we could fix it, then this release scheme may not be good enough for you. Therefore, we now also have a daily snapshot of our CVS repository. See the DDD WWW page `http://www.cs.tu-bs.de/softech/ddd/' for details. DDD 2.0 ------- DDD 2.0 brings XDB support, extended DBX support, an improved user interface as well as several new features and bug fixes. User-visible changes to DDD 1.4: - New command tool. All command buttons that do not take arguments are now located in the command tool, a small separate window. The command tool can be moved wherever appropriate, leaving more space for window contents. - User-defined buttons are now available. These can also be used to re-install the old command buttons. - Colored displays. You can specify individual colors for pointers, arrays, structs, and so on. - Variable values can now be altered interactively during program execution. - You can inquire the types of variables and functions (`whatis') through the source popup menu. - Selecting a data display item now also sets the `()' argument field in the source window, making it available for further commands. - `New display' subsumes `Dependent display': if a display is selected, the new display is made dependent on it. - `Show Detail' expands the entire selected value, including all contained sub-structures. - Option editors. New panels for DDD preferences and GDB settings. GDB settings can be saved across DDD sessions. - Some items have been renamed for further clarity: * The `command window' is now named `debugger console', to avoid confusion with the command tool. * The `Interrupt' button is now named `Break', to associate the concept with `Breakpoints'. * The `Break ()' and `Clear ()' buttons are now named `Break at ()' and `Clear at ()', respectively. * The `Dereference' button is now named `Display *'. - DDD now supports GDB-like incremental search in the command history. It is invoked through Ctrl+R and Ctrl+S in the debugger console. - Incremental search required some changes in keyboard shortcuts. `Run' is now Ctrl+Z, `Step' is Ctrl+I, and `Next' is Ctrl+J. - The `Save Options on Exit' function has been removed, as it also saved options given upon DDD invocation like `--dbx' or `--exec-window'. Options must now always be saved explicitly. - You can press Ctrl+\ to interrupt programs using a QUIT signal. - Ctrl+C and Ctrl+\ now have the highest priority of all events. - Improved remote debugging. In contrast to `--host', the new `--rhost' option uses `rsh' without arguments (aka `rlogin') to access the remote debugger. DEC and SGI DBX require this. - The DDD License can now be viewed from within DDD. - DDD resources and actions are now fully documented; the DDD manual contains several customization examples (fonts, colors, buttons). Supported debuggers and languages: - XDB support. On popular request, DDD now also supports HP's XDB as inferior debugger. - Extended DBX support. DDD determines DBX properties at run-time and adapts automatically to a wide range of DBX variants. - Even more DBX support. DDD now supports DBX on SUN, DEC, AIX, and IRIX systems. - Language support. DDD uses Pascal-style dereferencing (X^ instead of *X) if the current frame was written in Pascal, Ada, or Modula. (GDB only) - Modula-3 support. DDD supports `m3gdb', a GDB extension for Modula-3. Thanks to Peter Klein . Changes in configuration and building: - New top-level `configure' script. DDD now uses an `autoconf'- generated top-level `configure' script instead of Cygnus `configure'. Among other advantages, configuration options are now properly passed down to subdirectory configuration. - Regular expressions now use the POSIX.2 standard regcomp/regexec interface. The slower interface is compensated by smarter calls. - DDD configuration now generally attempts to link with native system libraries wherever possible. GNU termcap and librx are used only if the system does not provide them. This results in smaller and (hopefully) safer DDD executables. - DDD configuration tests whether your C++ compiler can compile a `hello, world' program. It is amazing how many misconfigured C++ compilers exist in the world. - You can specify `--without-athena' to avoid searching for and linking with Athena libraries. - Patches for AIX xlC, Sun CC, GCC 2.8.0 and probably other C++ compilers included. Thanks to Jacek Holeczek and Jason Merrill . - DDD now compiles and runs unchanged with LessTif, a free Motif clone under construction. Note that `runs' is relative: As of LessTif 0.50, DDD is still far from being usable. This will change as LessTif evolves. Bug fixes: - Improved directory support. Sources and executables can reside in several different directories. With DBX and XDB, DDD optionally uses full file paths when referring to source positions. - Several TTY problems fixed. Switching between execution window and debugger console should work fine now; the execution window can be opened, closed and re-opened without DDD crashing or hanging. - The terminal type (TERM environment variable) of the debugger console and the execution window is now properly set. - Editor problems fixed. Invoking a source editor via `Edit' should work fine now. - The rubber band outline no more clutters the data display. (This was a GCC optimization bug.) - No more endless scrolling when glyphs are enabled. Scrolling is slightly faster, too. - On HP-UX, the `@' character is no more discarded from GDB input. - On Solaris 2.x, annoying DBX warnings like `dbx: -r option only recognized for C++' are silently ignored. - You can now specify the location of own VSL libraries via the `vslPath' resource. - Improved diagnostics (file names and line numbers) for VSL errors. - The `--attach' and `--separate' options are no more overridden by the settings in `~/.dddinit'. - The `-synchronous' option (for X debugging) now works; `--synchronous-debugger' has been renamed to `--sync-debugger'. - The source window no more scrolls back to some previous position when adding or removing breakpoints. - Pagers (`more', `less', etc.) invoked by the inferior debugger are properly handled. (When seeing `--More--', DDD hits the space key.) - And, of course, hundreds of minor bug fixes and improvements. Release policy: - Before every new feature release (like this one), we shall make beta releases publicly available. They are named like the major release, but have `beta' and a number appended. For instance, this release was preceded by `ddd-2.0beta1', `ddd-2.0beta2', and so on. Beta releases will be announced in DDD mailing lists only. DDD 1.4d -------- Bug fix release; fixes problems introduced in DDD 1.4c. Changes to DDD 1.4c: - Several people have reported problems accessing the fonts specified in DDD 1.4c. We have thus now re-enabled the scheme from DDD 1.4b; how to change fonts is explained in the DDD FAQ. - Various fixes for C++ compilers other than GCC included (notably Sun CC 4.0 on Solaris 2.x) - The VSL interpreter can now be controlled upon DDD invocation; type `ddd --vsl-help' for a list of options. This is intended for debugging forthcoming display customization. This release should configure, compile and run out-of-the-box on OSF systems. Please let us know about any remaining problems. DDD 1.4c -------- Bug fix release. No user-visible changes. Changes to DDD 1.4b: - Major restructuring of `ddd.C', the DDD main program; compilation should now require slightly more time, but much less memory. Due to the large number of new files, diffs to earlier versions are somewhat larger than usual. - Font sizes are now resolution-independent, resulting in larger font sizes on high-resolution displays. - The built-in manual page is now compressed, resulting in slightly smaller executables. - Improved DBX 3.x support. Thanks to Grant McDorman . - Improved DEC Alpha/OSF support. Thanks to Phil Brooks . - Several minor and two major bugs were found and fixed. DDD 1.4b -------- Bug fix release. Changes to DDD 1.4a: - Much faster start-up, due to delayed parsing of the VSL library. - Custom paper size support for printing graphs. - Paper size and printing command is saved with options. - On some X11 configurations, DDD was caught in a busy loop upon invocation. Now fixed. - On some Linux configurations, DDD crashed immediately upon invocation. Now fixed. - Manual update of data display (`graph refresh') improved. - `set' and `assign' commands automatically update the data display. - New releases of top-level `configure' and `libiberty' included. - Building DDD creates executable with canonical name. DDD 1.4a -------- Bug fix release. No user-visible changes. - Compilation trouble with older GCC versions as well as older C++ compilers fixed. - Compilation in separate directory fixed. - For older GDB versions, one may use `display /x $pc' and `print /x $pc' to get the current PC value. - Minor bugs in construction and installation fixed. DDD 1.4 ------- DDD 1.4 realizes the top ten suggestions of DDD users. It brings the long awaited machine code support, new breakpoint and execution symbols, improved DBX support, enhanced integration facilities and many small features and improvements. Changes to DDD 1.3: - Full machine code support: Assembler and register windows, Breakpoints in machine code, no-source debugging, stepping over instructions. (GDB only) - Breakpoints and the current execution position are displayed as stop signs and arrow symbols (``glyphs'') instead of text. Our students find that cute; the old mode is still available. - New argument editor: Upon program start, select from a list of previously used program arguments. - Using the new `--tty' option, DDD can be easily integrated with other GDB/DBX front-ends. For instance, you can have DDD run as an inferior debugger from your Emacs GDB-mode, having all Emacs and DDD facilities at your disposition. - Improved C++ support with DBX 3.x. Thanks to Grant McDorman . - Displays with format expressions (`/x') are properly dereferenced. - Improved position history mechanism. - Automatic reloading of source files when the debugged program has changed; explicit reload is no longer required. - File selection dialogs are synchronized: changing the directory in one dialog also changes the directory in all others. - Interactive dialogs for disambiguating C++ names. - Several major and minor bugs have been fixed. Special thanks to Grant McDorman . - DDD incorporates the name of its builder in `Help/Show Version'. - No more `Help on Debugging' item. Sigh. DDD 1.3e -------- Bug fix release. - Some compilation trouble with older GCC versions as well as older C++ compilers fixed; thanks to Albert Chin-A-Young . - Some configuration trouble with non-GCC compilers and Motif 2.0 fixed; thanks to Larry Schwimmer . GNU Autoconf 2.7 is now used. - Functionality is unchanged; executables are identical. DDD 1.3d -------- Bug fix release. - Anonymous unions and bitfields are now processed correctly. - `Continue Until Here' (was `Set Temporary and Continue') now also stops if current stack frame is left (GDB only) - More patches for Linux ELF incorporated. Thanks to lee@tcs.com (Lee Hounshell) and jdassen@wi.leidenuniv.nl (J.H.M. Dassen) - Non-textual source files (binary characters, no newline at end) are now processed correctly. - Basic support for DEC's dbx included. DDD 1.3c -------- Bug fix release. - Patches for GCC 2.7.1 incorporated. - Patches for recent Linux boxes (using ELF format) incorporated. Thanks to lee@champion.tcs.co.jp (Lee Hounshell). - Patches for DEC Alpha OSF/1 incorporated; see the `PROBLEMS' file for special building instructions. Thanks to tuppa@iue.tuwien.ac.at (Walter Tuppa) - Configuration scripts reworked for GNU autoconf 2.6; various configuration bugs have been fixed. - New shortcuts in source popup menus: * The breakpoint popup menu allows you to set a temporary breakpoint and continue immediately. Suggested by Chris Sterritt * The source popup menu allows you to print or display dereferenced names (`print *' and `display *'). Suggested by Walter Tuppa - All DDD source code (except `ddd.C') now comes under the GNU general public *library* license. This means that the following is now allowed under certain circumstances: * Proprietary DDD extensions without supplying source code, and * Incorporating DDD code in proprietary applications See the `COPYING.LIB' file for details. DDD 1.3b -------- Bug fix release. - More minor troubles with GCC 2.7.0 on certain architectures fixed. - DDD can now be interrupted using the SIGINT signal. - In the breakpoint editor, you can now set multiple breakpoint conditions and ignore counts at a time. - The DDD WWW page has moved to `http://www.cs.tu-bs.de/softech/ddd/'. DDD 1.3a -------- Bug fix release. - Minor troubles with GCC 2.7.0 on certain architectures fixed. - New help item: DDD WWW Page. DDD 1.3 ------- This release compiles using GCC 2.7; some new features have been added and several minor bugs fixed. Some bugs remain; see the `BUGS' file for details. Changes to DDD 1.2: - You can now edit the current source via an external editor. - Display placement has been improved; new displays are now created in the current visible view, if possible. - The current execution position now stays near the middle of the visible source code. Following statements remain visible. - Diagnostics of printing commands no longer get lost. - Upon fatal errors, DDD tries to resume execution by returning to the main event loop. This leaves you a chance for exiting the debugged program properly. - New `Help on Debugging' item. Written by David A. Lyons . - Colours slightly reworked: text background is a little brighter. - A short DDD survey, including lots of screen shots, is included in `doc/ddd-paper.ps'. The paper also highlights some internal aspects of DDD. - DDD source code has been adapted to the current ANSI/ISO C++ draft standard. Any GCC release from 2.3.3 onwards, including the recent GCC 2.7.0, should now compile DDD (unjustified commpiler warnings in GCC 2.5 or lower, though). - DBX support on Solaris improved. Thanks to grant@isgtec.com (Grant McDorman) - Patches for FreeBSD incorporated. Thanks to smcarey@mailbox.syr.edu (Shawn M. Carey). - DDD-specific application defaults now override user application defaults. Thanks to ksfdo0@ksepl.shell.nl (Fred Donck). - New GNU librx 0.07.2 library included (from libg++-2.7.0), should be faster and more reliable. Thanks to all who sent in bug reports and suggestions. DDD now runs on every major UNIX flavour (with the exception of OSF/1 - any volunteers for that task?). DDD 1.2 ------- Again, a bug fix release. Many minor bugs have been fixed; see the `ChangeLog' file for details. Changes to DDD 1.1: - DDD source code should now be ANSI/ISO C++ conformant - all code specific to GCC or libg++ has been adapted. DDD now also compiles using other C++ compilers than GCC (Sun's CC 4.0 works fine; AT&T Cfront 3.0 has trouble with some inline functions). - DDD should now run correctly on SGI/IRIX machines. - Interrupting processes via the Interrupt button now works correctly on Solaris, HP-UX, and other systems. - Improved support for GDB artificial arrays. - The GDB command window has improved control character support. Tabs, Carriage returns, Backspaces and so on are processed correctly. Unprintable characters are also handled. - There is an option to suppress X warnings. This may be useful for people annoyed by tons of Motif Keysym warnings. - We have started to compile a FAQ list to reduce our daily mail load. See the file `FAQ' for details. Thanks to all who sent in bug reports and suggestions. As building DDD is still a major challenge for some users, we encourage everyone to share her/his binaries with others. See the file ftp.ips.cs.tu-bs.de:/pub/local/softech/ddd/bin/README for details. DDD 1.1 ------- Never trust a ``dot-oh'' release - DDD 1.0 had a serious bug that caused DDD to crash upon various occasions, often after a few interactions. Under certain circumstances and on many architectures, the hourglass cursor routines could corrupt the stack at a random point and thus throw a time bomb into DDD, making DDD fail at unpredictable (and unrepeatable) places. This bug has been fixed; some other minor bugs were fixed, too. See the `ChangeLog' file for details. Changes to DDD 1.0: - C++ References and VTables are fully supported. - The source popup menu no longer changes the source selection. DDD 1.0a -------- Bug fix release. On many architectures, this DDD release should be much more robust. For unknown reasons, DDD 1.0 choked soon after destroying some of its widgets - a bug that must have been introduced at the very end of the beta test phase and thus have gone by unnoticed. This bug, and some other minor bugs, have been fixed. DDD 1.0 ------- First public DDD release. Many thanks to all who spent their time in testing DDD, sending bug reports and suggestions, and making DDD what it is today. This DDD release should configure, compile and run out-of-the-box on the following systems: hppa1.1-hp-hpux9.05 linux-i386-unknown linux-i486-unknown mips-dec-ultrix4 powerpc-ibm-aix3 rs6000-ibm-aix3 sparc-sun-sunos4 sparc-sun-solaris2 If your system is in the list above, please let us know if you encountered any problems (unless these are known problems listed in the `BUGS' and `PROBLEMS' files). If your system is not in the list above, please let us share your experiences. Changes to DDD 0.9: - Several last-minute bugs have been fixed. - New `Program' menu, introduces keyboard accelerators for frequently used commands. - Graph printing reworked; you can now set paper size and graph orientation. The bounding box is computed correctly for all sizes. - The `Graph' menu has been dropped; its items have been moved into the `Data' and `File' menus. - Selecting and moving multiple displays made easier. - Pointers to functions are now displayed correctly. - Regex name conflicts on Linux fixed. Announce policy for future releases: - Bug fix releases shall be named 1.0a, 1.0b, and so on. In general, they will be announced in DDD mailing lists only. - Feature releases shall be numbered 1.1, 1.2, 1.3 and so on. They will be announced in USENET news as well. $Id: NEWS,v 1.211 1997/10/30 09:27:25 zeller Exp $