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

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.

- `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 Glomsrød
  <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.339 1998/06/17 12:48:36 zeller Exp $
