DDD News						-*- text -*-
********

DDD 3.1.6
=========

DDD 3.1.6 brings support for recent tools and components.

- DDD passes all options after `--' to the inferior debugger.
- [Build] DDD supports EGCS 1.1.2 as well as GCC 2.95 and later
- [Build] DDD supports LessTif 0.88.9 and later.

There are no new features in DDD 3.1.6.  You don't need to upgrade
unless you suffer from one of these problems.


DDD 3.1.5
=========

DDD 3.1.5 brings support for recent tools and components.

- [Linux] DDD supports TTYs on Linux with GNU libc 2.1.
- [Solaris] DDD supports Motif 2.1 on Sun Solaris 7.
- [XEmacs] DDD supports gud-mode in XEmacs 21.0.
- [Build] DDD supports Bison 1.27 and Automake 1.4a.

There are no new features in DDD 3.1.5.  You don't need to upgrade
unless you use one of the listed tools and/or components.


DDD 3.1.4
=========

DDD 3.1.4 brings improved LessTif support and fixes more minor
problems in DDD 3.1.

- Changing the GDB display radix automatically refreshes displayed values.
- Searching Java classes visits each file exactly once.
- [LessTif] LessTif 0.88 is supported.  See `PROBLEMS' for a discussion.
- [LessTif] Worked around X error when scrolling breakpoint glyphs.
- [Linux] Improved GNU libc 2.1 support (TTYs).
- [HP-UX] Improved aCC support.
- [Solaris] Improved Motif 2.1 support (Pixmaps).

There are no new features in DDD 3.1.4.  You don't need to upgrade
unless you suffer from one of these problems.


DDD 3.1.3
=========

DDD 3.1.3 fixes more minor bugs in DDD 3.1.

- Invoking DDD with a non-existing file name works.
- Displays disabled by GDB are created and refreshed properly.
- [HP-UX, SGI] Perl no longer exits upon start-up.
- [LessTif] Worked around a LessTif bug that made DDD insensitive to input.
- [Build] New configuration files from Autoconf 2.13.

There are no new features in DDD 3.1.3.  You don't need to upgrade
unless you suffer from one of these bugs.


DDD 3.1.2
=========

DDD 3.1.2 fixes more minor bugs in DDD 3.1, most of them related to Perl:

- Show/Hide works properly with deeply nested substructures.
- Struct members whose name starts with 'END' are properly handled.
- Starting DDD with `no command tool' set in `~/.ddd/init' works.
- Console input after `print FUNCTION()' is passed to FUNCTION.
- [Perl] Arguments of `Program->Run' are processed correctly.
- [Perl] You can redirect I/O in arguments of `Program->Run'.
- [Perl] The separate execution window can now be used with Perl.
- [Perl] DDD handles class prefixes when displaying variables.
- [Perl] The backtrace window is updated after each command.
- [Perl] The `Convert to Hex' and `Convert to Oct' conversions work.
- [Perl] Refreshing the graph via `Data->Refresh Graph' works.
- [Perl] Changing, saving and restoring various Perl settings works.
- [Java] DDD uses $CLASSPATH to lookup Java classes on start-up.
- [DBX] DDD supports execution positions as reported by AIX DBX.
- [DBX] The registers window is updated after each command.
- [Build] The splash screen works with C++ compilers other than GCC.

There are no new features in DDD 3.1.2.  You don't need to upgrade
unless you use Perl or suffer from one of these bugs.


DDD 3.1.1
=========

DDD 3.1.1 fixes a number of minor bugs in DDD 3.1:

- Empty status displays are handled properly.
- Using a remote GDB, only one execution window is launched.
- [DBX] DDD handles incomplete DBX output, such as prompts of the
  debugged program.  See the new `positionTimeout' and
  `displayTimeout' resources.
- [DBX] Using DBX and the execution window, `Program->Run Again' and
  the `Run' command tool button no longer clear all arguments.
- [Perl] DDD handles multiple breakpoints with Perl 5.005 and later.
- [Java] DDD no longer hangs searching for a Java class.
- [Build] EGCS 1.1 on Linux properly compiles DDD.
- [Build] ostrstream::pcount() is no longer considered `broken' when
  using `gcc' (instead of `c++' or `g++') as C++ compiler.

There are no new features in DDD 3.1.1.  Unless you suffer from one of
the bugs listed above, feel free to upgrade at some later time.


DDD 3.1
=======

DDD 3.1 brings Perl support, Python support, data plotting, Undo/Redo,
and advanced data exploration.


Debuggers and Languages
-----------------------

- Perl support.  DDD supports debugging Perl programs, using the Perl
  debugger.  Requires Perl 5.003 or later.

- Python support.  DDD supports debugging Python programs, using the
  PYDB command-line debugger.  See the `pydb' sub-directory for PYDB
  source and details.  
  Python support was contributed by Richard Wolff <rwolff@noao.edu>.

- By default, DDD will automatically select the most appropriate
  debugger for the given arguments (i.e. Perl for perl files, JDB for
  Java classes, etc.).

- Improved JDB class search.  Using JDB, `File->Open Class' no longer
  searches the class path for .java source files; instead, it searches
  for `.class' files and returns all classes with accessible `.java'
  sources.  Subdirectories are also searched.

- Further improved FORTRAN support.  When looking up FORTRAN functions
  and variables, DDD also tries to append two trailing underscores
  `__', as generated by g77 on several architectures.


Plotting
--------

- Array plots.  You can plot one- and two-dimensional numeric arrays
  via the `Plot' button.  This gives a totally new meaning to `data
  display debugger'.  Requires Gnuplot 3.5 or later.

- History plots.  You can plot the history of a numerical variable,
  i.e. the sequence of previous values.

- Plots can be animated, visualizing algorithm effects.


Undo/Redo
---------

- All commands affecting debugger state (breakpoint settings,
  displays, debugger settings) can be undone and redone, using
  `Edit->Undo' and `Edit->Redo' or the shortcuts on the command tool.

- Program execution commands can be `undone', too.  This means that a
  previously recorded state (execution position, display values,
  backtrace, registers) is shown again.  Using undo/redo, you can
  easily determine how some variable changed in the last steps.

- `Undo' and `Redo' supersede the old `Back' and `Forward' functions.


Data exploration
----------------

- Edge annotations.  Edges are now annotated with the relation between
  the connected displays - i.e. the member name, array index or likewise.

- Titles on dependent displays are now disabled by default, as they
  can be inferred from edge annotations.  Saves screen space.

- Clusters.  You can join several data displays into a cluster display,
  showing data like local variables.  Saves screen space.

- When displaying a list of displays A -> B -> C, the offset between
  items remains constant.

- Several improvements in processing data output of the inferior debugger:
  * Many more data formats are recognized.
  * Trailing data is no longer ignored.
  * C++ base classes as reported by AIX DBX are interpreted correctly.
  * Value changes in status displays are flagged more precisely.
  * Creating and updating displays uses a common code base.

- `Set ()' dialog improvements:
  * You can now set structs as a whole.
  * A drop down selection of previously set values is available.
  * Invalid values cause the dialog to remain open.

- Typed aliases.  DDD now requires structural equivalence for aliases.
  This means that two displays are only considered aliases if they are
  at the same address _and_ have the same type.  See the
  `typedAliases' resource for a discussion.

- When DDD creates a new dependent display, it copies the selection
  state from the originating display.  This way, you can easily unfold
  linked elements simply by clicking `Disp *' again and again.

- The `New Display' menu is maintained separately for each debugger
  type.  That is, you can have different menus for GDB, DBX, Perl,
  etc.  There are also suitable defaults for each of these.

- Ctrl+Double Click dereferences a pointer `in place' - the original
  display is replaced by the dereferenced display.

- Anonymous unions are no longer prefixed by `='.

- `Examine Memory' also works for Solaris DBX.


Source exploration
------------------

- Double-clicking on a function call (that is, an identifier followed
  by a `(' character) will lead you to the function definition.

- The GDB `Open Source' dialog has a filter.

- You can easily toggle line numbers via the `Source' menu or the
  `Source' preferences.

- Dragging breakpoints works much better with scrolling.

- Ctrl+Double Click in the breakpoint area sets a temporary breakpoint.

- Ctrl+Double Click on a breakpoint deletes the breakpoint.

- Ctrl+Double Click on a variable looks up the variable definition.


Printing
--------

- Arc edges are printed as such.

- Graphs can be printed in color.

- You can select a file to print to via a file selection browser.


File Access
-----------

- The `filterFiles' resource allows you to turn off filtering files
  when opening executables, core dumps, or sources.  This is useful in
  environments with slow file access.


User Interface
--------------

- DDD has a new splash screen by Stefan "snowcrash" Stiasny <sc@swi.ml.org>.

- Insensitive items have a 3-D `emboss' look, making them more legible.

- `Flat' toolbar buttons keep their border after having been activated.

- Toolbar buttons appear in color when entered.  See the
  `activeButtonColorKey' resource for details.

- Using Motif 2.0, the `Insert' key toggles text insertion mode.

- The function keys F2-F9 are bound to frequently used commands:

	F2 Run
	F3 Run Again
	F4 Kill
	F5 Step		Shift+F5 Step Instruction
	F6 Next		Shift+F6 Next Instruction
	F7 Until
	F8 Finish
	F9 Continue	Shift+F9 Continue Without Signal

  The bindings from DDD 3.0 and earlier (Ctrl+E for Run, Ctrl+I for
  Step, etc.) are still available.

- Ctrl+Double Click is bound to some extra functions.  See `Source
  exploration' and `Data exploration', above.

- You can configure the Ctrl+C (`Interrupt' vs. `Copy') and Ctrl+A
  (`Select All' vs. `Beginning of Line') key bindings via Preferences.

- You can configure the tool bar to appear at the bottom of the
  window, as in DDD 2.x and earlier.


Settings
--------

- You can safely run multiple DDD instances at the same time.
  * DDD detects when option files have been changed (e.g. by saving
    options in another DDD instance) and offers reloading option files.
  * Likewise, when saving options, DDD warns against overwriting
    option files that have been changed by another DDD instance.
  * The initial warning about running multiple DDD instances is
    disabled by default.  Use `Edit->Preferences->General->Warn if
    Multiple DDD Instances are Running' to re-enable it.
  See also the `checkOptions' and `warnIfLocked' resources.

- User-defined commands can accept a symbolic argument.  See the `()'
  toggle button in `Commands->Define Command'.

- History customization.  You can customize the number of items in
  pop-down value histories as well as the way they are sorted.  See
  the `popdownHistorySize' and `sortPopdownHistory' resources.

- Using `Status->Signals->All Signals', you can modify signal handling 
  for all signals at once.

- Signal settings are saved with the current session.

- Opening a session restores button definitions, display shortcuts,
  and tab width.  This way, you can manage different configurations
  for different projects.

- DBX breakpoints are saved referring to the function name, if possible.
  This is useful when working with derived sources.


Building DDD
------------

- EGCS 1.1 is supported.

- LessTif 0.87 is supported (and recommended).

- Cygwin is supported.

- On AIX, `configure' prevents linker TOC overflows via the linker
  flag `-Wl,-bbigtoc' or the compiler flag `-mminimal-toc'.

- On SGI, `configure' works around a bug in the CC C++ I/O library
  that causes `ostrstream::pcount()' to increase by 1 after
  `ostrstream::str()' has been called.

- On Solaris, `configure' adds the CC `-xs' flag to executables, such
  that they can be debugged by GDB.

- `configure' also warns about configurations known to be `risky' -
  that is, where DDD may not run as expected.



Bug fixes
---------

- This release brings major performance improvements, especially when
  processing large chunks of data.  In fact, the time complexity of
  data processing algorithms has been improved from O(n^2) to O(n).

- On DBX (except Sun DBX), the `Run' button is now bound to the
  `rerun' command, re-using program arguments.

- Recognition of DBX positions (especially DEC DBX) has again improved.

- Value tips for large arrays no longer cause significant delays.

- Improved redirection handling.  You can redirect stderr away from
  the execution window, using `run 2> FILE'.  The debugger command
  `run 2> /dev/tty' will redirect stderr to the debugger console.

  On inferior debuggers without stderr redirection support (such as
  most DBXes), invoke DDD with `--debugger "dbx 2> FILE"' instead.

- Sun DBX warnings like `warning: -r option only recognized for C++'
  are properly suppressed.

- Significant memory leaks in the data window have been plugged.

- DDD handles unbuffered echoing TTY modes as set by some DBX flavours.

- Promptless input from the debugger console is handled correctly.

- The `Disp *' button dereferences pointers as it should.

- Using separate DDD windows, data buttons are properly placed.

- Several hard-coded limits have been raised, such as the length of
  GDB commands.

- The `Home' and `End' keys work in all text fields.



Maintenance
-----------

- All remaining German comments in DDD source have been translated
  into English.

- When DDD crashes, all information required for maintenance (such as
  a stack trace) is automatically included into the DDD log.

- The DDD `--maintenance' option enables a top-level `Maintenance'
  menu with additional options for maintaining DDD.



DDD 3.0
=======

DDD 3.0 brings a new, `clean' look, Java support, and JDB support.


User Interface
--------------

- New, `clean' look.  One single tool bar at the top provides all actions.

- Low screen space requirements.  In the default configuration, DDD
  requires less than 600x600 pixels.

- Configurable fonts.  You can easily customize DDD font settings via
  `Edit->Preferences->Fonts'.

- Tear-off menus are supported (and enabled by default).

- New key bindings.
  * All key bindings are conformant with the KDE style guide:
    Ctrl+O opens a file, Ctrl+S saves the session, etc.
  * ESC is the canonical `Interrupt' key.  Ctrl+C still
    interrupts, too, but can be assigned to Copy for full KDE
    style compliance.

- Edit->Cut/Copy/Paste/... now apply to the current destination
  text field (i.e. the one that has the selection, or the least
  recently used).  This way, you can cut/copy/paste across all
  text fields.

- History mania.  Several text fields, including the `()' argument
  field, now have drop down history selections.


Debuggers and Languages
-----------------------

- JDB support.  DDD now also supports JDB as inferior debugger.  All
  important JDB features are available via the GUI.

- Java support.  Requires GDB 4.17 or later (or JDB, of course).  All
  data display features are available in Java.

- Basic Ada support.  Rick Flower <Rick.Flower@trw.com> provided a set
  of patches for basic GDB/Ada (GNAT) support.

- Further improved FORTRAN support.  DDD refers to FORTRAN functions
  and variables by converting them to uppercase with trailing
  underscore `_', as generated by f77 on several architectures.

- GDB 4.17 is supported.

- WDB (HP's Wildebeest debugger) is supported.

- SGI DBX (especially `DBX Settings') is supported.

- DBX on Solaris 2.5 (prompting with `(dbx N)') is supported.


Source exploration
------------------

- Breakpoint properties.  There is an editor panel to set and change
  all properties for a breakpoint at once.  For details, see
  `Source->Edit Breakpoints->Properties'.

- You can easily set and edit breakpoints by double-clicking on the
  left of the source.

- Breakpoint commands.  Using GDB, you can record and edit commands to
  be executed when a breakpoint is reached.

- Conditional breakpoints, temporary breakpoints, and breakpoints with
  ignore counts now have their special symbols on their own.

- Disabling and enabling breakpoints is now supported on all inferior
  debuggers except JDB.

- Regexp Breakpoints.  Using GDB, you can set breakpoints at all
  functions matching a regular expression:
  * `^Date::' sets a breakpoint on every member of class `Date'
  * `_fun' sets a breakpoint on every function whose name contains `_fun'
  See `Break At ()->Set Breakpoints at Regexp ()'.

- Value tips and selections work for struct members, too: you can
  point at `A.B', `A->B', or `A::B' and get the current value.

- Entering `list X' at the debugger prompt shows X in the source
  window.

- Using GDB, `File->Open Source' now lists the available source files
  for the debuggee, rather than scanning the file system for sources.

- DDD no longer indents the source code, leaving more horizontal
  space.  See `Edit->Preferences->Source->Source indentation'.

- The maximum number of glyphs is now configurable at startup time.
  See the `maxGlyphs' resource for details.

- On popular demand, the command tool has two new buttons:
  * `until' runs the program until a line greater than the current is
    reached or the current stack frame is exited.  Requires GDB.
  * `make' invokes the `make' program.


Data exploration
----------------

- Watchpoints.  You can have the debugged program stop automatically
  whenever a particular variable is read or written.

- Memory dumps. Using GDB, `Data->Examine Memory' lets you examine
  memory in any of several formats, independently of your program's
  data types.

- In `stacked window' configuration, the data window automatically
  pops up as soon as some value is displayed, and it pops down as soon
  as the last visible display is deleted.

- You can easily display variable values in the data window by
  double-clicking on an occurrence.

- The `Undisplay ()' button also deletes all aliases of the selected
  display.  See the `deleteAliasDisplays' resource for details.

- Deleting all displays at once requires confirmation from GDB.

- Using GDB, VALUEs that are repeated N times are now displayed as
  `VALUE <Nx>', saving space in the data display; see `Edit->GDB
  Settings->Threshold for repeated print elements'.  Setting the
  `expandRepeatedValues' resource to `on' turns this off.

- Displays are persistent across recompilation.  This is achieved via
  `deferred' displays, whose creation is deferred until a particular
  scope is entered.  In the same veine, displays are also persistent
  across debugging sessions, even if no core dump was included.


Program Execution
-----------------

- Signal handling.  Using GDB, you can control whether signals are
  passed to your program and whether they interrupt execution.  See
  `Status->Signals' for details.

- Frozen X display detection.  When detecting a grabbed mouse pointer
  after reaching a breakpoint, DDD now automatically continues
  execution, rather than attempting to ungrab the pointer.


Help and Assistance
-------------------

- Improved help system.  In accordance with the Motif style guide, F1
  invokes help on the item pointed at; Shift+F1 lets you choose an item.

- Tips of the day.  Upon startup, DDD gives a hint on DDD usage.


Miscellaneous
-------------

- User-defined commands.  Using GDB, you can record and edit new
  commands and assign them to buttons; see `Commands->Define Command'.
  All commands are saved across DDD sessions.

- The Reference, License, and News windows now come with a menu bar
  and a find facility.  They can be easily resized.

- `File->Open Recent' allows you to re-open the nine most recently
  debugged programs.

- All selection dialogs can be properly resized.

- You can have the most important dialogs be realized as
  non-transient windows, allowing the DDD main window to obscure
  them.  See the `transientDialogs' resource for details.

- Moving the wheel of a wheel mouse will scroll the text windows.

- Save Options improvements.
  * DDD saves whether a window is open or closed.
  * DDD only saves resources that differ from the default setting.
  * Saving options is also much, much faster.


Bug fixes
---------

- Data displays are no longer cluttered by Sun DBX 3.0 warnings.

- Paned window management has been improved a lot.

- DDD works around a Motif 2.1/XFree86 bug that caused glyphs
  to disappear.  See the `cacheGlyphImages' resource for details.
  (This bug could be fixed thanks to Trond Eivind Glomsrd
  <teg@pvv.ntnu.no> who donated a copy of Motif 2.1 for Linux)

- The `endless scrolling' problem may be prevented by delaying
  glyph updates.  See the `glyphUpdateDelay' resource for details.

- DDD no longer terminates the inferior debugger when receiving an 
  EOF on input.   See the `terminateOnEOF' resource for details.

- The new grab detection mechanism no longer interferes with grabs
  on Motif popup and pull down menus.

- One-letter options like `-b BPS' or `-x FILE' work again.

- Trailing CRs in debuggee output are properly handled.

- GDB in annotation mode is properly handled.

- The data window with Motif scrollbars no longer ignores resizes.

- In X11R5 and later, DDD uses the `baseTranslations' resource instead
  of `translations'.  This allows users to provide their own
  translations without having to copy existing translations.

- The DDD splash screen (and all other XPM stuff, too) now also
  accepts `close' colors.

Once more, there are several more minor improvements and bug
fixes; see the `ChangeLog' file for details.


Changes in configuration and building
-------------------------------------

- The DDD `configure' script includes new checks for a sane build
  environment.

- LessTif 0.85 is supported (and a standard test environment of
  the DDD developers).  See `patches/' for useful patches.

- GCC 2.8.1 with enabled optimization is supported.

- You can configure DDD such that the `Ddd' application defaults file
  and the DDD manual will not be compiled into the DDD executable,
  reducing the executable size by about 400k.  See the `INSTALL' file
  for details and drawbacks.


Compatibility notes
-------------------

- Several key bindings have been re-assigned for compliance with
  the KDE style guide (`http://www.kde.org/standard-keys.html').

    Action        Old key       New key       Rationale
    ------------  ------------  ------------  ----------
    Attach        Ctrl+Z        -/-           Ctrl+Z is Undo in KDE
    Backward      Ctrl+B        Left          Ctrl+B is now Rev Search
    Close         Alt+W         Ctrl+W        KDE standard
    Continue      Ctrl+O        Ctrl+T        Ctrl+O is now Open
    Delete Word   Ctrl+W        Ctrl+Backspc  Ctrl+W is now Close
    Detach        Shift+Ctrl+Z  -/-           Ctrl+Z is Undo in KDE
    Edit          Shift+Ctrl+E  Shift+Ctrl+V  Ctrl+E is now Run
    Forward       Ctrl+F        Right         Ctrl+F is now Search
    Interrupt     Ctrl+C (*)    Esc           Ctrl+C is Copy in KDE
    Open File     Alt+O         Ctrl+O        KDE standard
    Open Session  Shift+Alt+O   Ctrl+N        KDE standard
    Page Down     Ctrl+V        Page Down     Ctrl+V is Paste in KDE
    Print         -/-           Ctrl+P        KDE standard
    Rev Search    Ctrl+R (*)    Ctrl+B        Ctrl+R is Replace in KDE
    Run           Ctrl+X        Ctrl+E        Ctrl+X is Cut in KDE
    Run Again     Shift+Ctrl+X  Shift+Ctrl+E  Ctrl+X is Cut in KDE
    Save Session  -/-           Ctrl+S        KDE standard
    Search        Ctrl+S        Ctrl+F        KDE standard
    Select All    Alt+Z         Ctrl+A        KDE standard
    Unkill        Ctrl+Y (*)    Shift+Ctrl+Y  Reserved for Redo

  For smoother transition, keys marked with (*) are still available
  by default, but may be re-assigned in future DDD releases.

  For full compliance to the KDE style guide, the Cut/Copy/Paste
  operations must be assigned to Ctrl+X/Ctrl+C/Ctrl+V.  This is
  done by setting `Edit->Preferences->Startup->Cut/Copy/Paste
  Bindings' to `KDE style'.

  See the `Ddd' app-defaults file to change other key bindings.

- Some resources had to be renamed for clarity and/or Motif conflicts:
 
    Old resource name   New resource name     Rationale
    ------------------  --------------------  ----------------
    toolBar             commandToolBar        Ambiguity
    colorIcons          colorWMIcons          Ambiguity
    dataWindow          openDataWindow        sourceWindow used in Motif
    sourceWindow        openSourceWindow      sourceWindow used in Motif
    debuggerConsole     openDebuggerConsole   sourceWindow used in Motif
    traceDialog         trace                 One resource suffices
    traceShellCommands  trace
    ungrabMousePointer  checkGrabs            New functionality
    showStartupLogo     splashScreen +        Use separate resources
                        splashScreenColorKey

  Please rename all references to the old DDD resources.

- To enable a DDD 2.x style window layout, use

    Ddd*commonToolBar:    off
    Ddd*toolbarsAtBottom: on

  in your `~/.ddd/init' file.  For a full DDD 2.x look, disable images
  and captions via `Edit->Preferences->Startup->Toolbar Appareance'.

- Source line numbers are now automatically enabled as soon as you
  set the source indentation amount to 8 characters or more.  See
  `Edit->Preferences->Source->Source indentation'.

- Be sure not to leave `Ddd' app-defaults files from previous
  versions behind.  DDD does not require app-defaults files; in
  fact, we recommend strongly *NOT* to use or install them.


Future directions
-----------------

- XDB-specific code will no longer be maintained.  You should be
  able to use HP's Wildebeest (WDB) instead, a free GDB port to
  HP-UX (`http://www.hp.com/lang/tools/Debuggers/WDB/').  Please
  let us know your experiences with DDD and WDB.

- The future default for Cut/Copy/Paste Bindings will be the KDE
  style: Ctrl+X/Ctrl+C/Ctrl+V.

- For further ideas and possible extensions, see the file `TODO';
  send your suggestions to `ddd-users@ips.cs.tu-bs.de'.


For older news, see the file `NEWS-OLD' in the DDD distribution.

$Id: NEWS,v 1.428.4.36 1999/08/10 15:11:57 andreas Exp $
