GDB paper at GCC summit: user-level features

PAUL GILLIAM
2006-04-10T21:17:30Z

Here is stuff about new or improved "user-level" features I gleaned from
NEWS. I will try non-user level features next. I would welcome any
comments.

-------- >6.4 --------

New Features:

Checkpoints
This facility allows the user to create a checkpoint, continue
debugging, and then 'backup' to the point where the checkpoint
was taken. More that one checkpoint can be made and commands
have been added to manage them.

Improved Features:

fork
Previously, the user had to decide which process should continue
to be debugged after a fork: the parent or the child. The one
not debugged would run unhindered to completion. Now it is
possible to debug both processes without the kludge of starting
a second GDB.

Convenience Variables
A number of improvements where made for convenience variables:
* A new command was added: "init-if-undefined": this is useful
for user defined functions that need to save state.
* In general, convenience variables are no longer reset by a
symbol-file command.

Windows Host Support
GDB now builds as a cross debugger hosted on i686-mingw32,
including native console support, and remote communications
using either network sockets or serial ports.

Removed Features:

ARM rdi-share module

Netware NLM Debug Server

-------- 6.4 --------

New Features:

BSD user-level threads support
User level thread libraries are now supported for freeBSD and
openBSD. Kernel thread libraries are not yet supported.

VAX floating point support
Support was added for the not-quite-IEEE VAX F and D floating
point formats.

Improved Features:

User-defined command support
A new convenience variable, $argc, has been added so that a user
defined function can know how man arguments were given when it
is invoked.

Displaying Arrays
When an array is displayed, its values are displayed without
reference to their index in the array. The new 'set print
array-indexes" command my be used so that index values are
included.

Removed Features:

-------- 6.3 --------

New Features:

"-l" command line option
GDB now accepts -l followed by a number to set the timeout for
remote debugging.

Support for GCC -feliminate-dwarf2-dups
GDB now supports a more compact representation of DWARF-2 debug
information using DW_FORM_ref_addr references. These are
produced by GCC with the option -feliminate-dwarf2-dups and also
by some proprietary compilers. With GCC, you must use GCC 3.3.4
or later to use -feliminate-dwarf2-dups.

Internationalization
When supported by the host system, GDB will be built with
internationalization (libintl). The task of marking up the
sources is continued, we're looking forward to our first
translation.

Ada
Initial support for debugging programs compiled with the GNAT
implementation of the Ada programming language has been
integrated into GDB. In this release, support is limited to
expression evaluation.

Improved Features:

Remote Protocol
GDB's remote protocol now includes support for the 'p' packet.
This packet is used to fetch individual registers from a remote
inferior.

Removed Features:

-------- 6.2.1 --------

This release fixed a couple of near 'show stoppers' on the MIPS and VAX
architectures.

-------- 6.2 --------

New Features:

Support for the BSD Kernel Data Access Library (libkvm) interface.
Using 'target kvm', it is now possible to debug kernel core
dumps and live kernel memory images on various BSD flavored
platforms. Currently, the following native-only configurations
are supported: FreeBSD/amd64, FreeBSD/i386, NetBSD/i386,
NetBSD/m68k, NetBSD/sparc, OpenBSD/amd64, OpenBSD/i386,
OpenBSD/m68k, and OpenBSD/sparc.

Cygwin support for DWARF 2.

Improved Features:

Threads
Support for NPTL threads was enhanced to work better with target
programs that rapidly create and delete threads.

Removed Features:

Command line options "-async" and "-noasync", which supported the
broken "no acync" feature, where removed, effectively removing the
feature.

-------- 6.1.1 --------

This was primarily a maintenance release to fix several built problems.

New Features:

Improved Features:

Text-mode User Interface
The TUI (text-mode user interface) is now build by default.
This is a curses based interface that provides a kind of
primitive 'GUI' and can be activated by using the -i=tui command
line option to GDB or by running the separate "gdbtui" program.
See the manual for more info.

Removed Features:

-------- 6.1 --------

New Features:

Pending Breakpoints
Support was added to allow setting breakpoints in shared
libraries that have not yet been loaded. If the 'breakpoint
pending' option is set to auto, the user is asked if a the
breakpoint should be made pending on a future shared-library
load. When the breakpoint symbol is resolved, the pending
breakpoint is removed and one or more regular breakpoints are
created. Pending breakpoints are very useful for GCJ Java
debugging.

Improved Features:

New C++ Demangler
A new demangler was added that does a better job on mangled
names generated by G++. The new demangler also runs faster,
helping GDB to start up faster on large C++ programs.

DWARF 2 Location Expressions
Support was extended to support function arguments and frame
bases. Formally, these would cause GDB to crash.

C++ nested types and namespaces
Support for these was improved, especially for users of DWARF 2.

Removed Features:

-------- 6.0 --------

New Features:

Objective-C
Support for debugging programs written in the Objective-C
language has been integrated into GDB.

Thread local storage (TLS)
Now supports the GNU/Linux implementation of per-thread
variables.

Improved Features:
Threads
GDB now supports the new NPTL threads as well as the older
LinuxThreads library.