Updated: gdb-7.3.50-1

Christopher Faylor cgf-use-the-mailinglist-please@cygwin.com
Sun Jul 31 17:35:00 GMT 2011

I've made a new version of the gdb debugger available for installation.
This version is a refresh from the main branch of the CVS repository on
sourceware.org.  The package no longer contains the "insight" graphical
debugger.  Time permitting, there will be a separate package introduced
for insight.

A copy of the NEWS file from this release is included below.  I've been
extremely remiss in releasing a new version of gdb (the last one was
in 2008!) so the NEWS file is long.  I'll try to adopt a more regular
release cadence in the future.


If you want to unsubscribe from the cygwin-announce mailing list, please
use the automated form at:


If you need more information on unsubscribing, start reading here:


Please read *all* of the information on unsubscribing that is available
starting at this URL.
		What has changed in GDB?
	     (Organized release by release)

*** Changes since GDB 7.3

* GDB has two new commands: "set remote hardware-watchpoint-length-limit"
  and "show remote hardware-watchpoint-length-limit".  These allows to
  set or show the maximum length limit (in bytes) of a remote
  target hardware watchpoint.

  This allows e.g. to use "unlimited" hardware watchpoints with the
  gdbserver integrated in Valgrind version >= 3.7.0.  Such Valgrind
  watchpoints are slower than real hardware watchpoints but are
  significantly faster than gdb software watchpoints.

* Python scripting

  ** The "maint set python print-stack on|off" command has been
     deprecated, and a new command: "set python print-stack on|off" has
     replaced it.  Additionally, the default for "print-stack" is now
  ** A prompt subsitution hook (prompt_hook) is now available to the
     Python API.

* libthread-db-search-path now supports two special values: $sdir and $pdir.
  $sdir specifies the default system locations of shared libraries.
  $pdir specifies the directory where the libpthread used by the application

  GDB no longer looks in $sdir and $pdir after it has searched the directories
  mentioned in libthread-db-search-path.  If you want to search those
  directories, they must be specified in libthread-db-search-path.
  The default value of libthread-db-search-path on GNU/Linux and Solaris
  systems is now "$sdir:$pdir".

  $pdir is not supported by gdbserver, it is currently ignored.
  $sdir is supported by gdbserver.

* New configure option --with-iconv-bin.
  When using the internationalization support like the one in the GNU C
  library, GDB will invoke the "iconv" program to get a list of supported
  character sets.  If this program lives in a non-standard location, one can
  use this option to specify where to find it.

* When natively debugging programs on PowerPC BookE processors running
  a Linux kernel version 2.6.34 or later, GDB supports masked hardware
  watchpoints, which specify a mask in addition to an address to watch.
  The mask specifies that some bits of an address (the bits which are
  reset in the mask) should be ignored when matching the address accessed
  by the inferior against the watchpoint address.  See the "PowerPC Embedded"
  section in the user manual for more details.

* The new option --once causes GDBserver to stop listening for connections once
  the first connection is made.  The listening port used by GDBserver will
  become available after that.

* New commands "info macros", and "info definitions" have been added.

* Changed commands

  The watch command now supports the mask argument which allows creation
  of masked watchpoints, if the current architecture supports this feature.

info auto-load-scripts [REGEXP]
  This command was formerly named "maintenance print section-scripts".
  It is now generally useful and is no longer a maintenance-only command.

* Tracepoints can now be enabled and disabled at any time after a trace
  experiment has been started using the standard "enable" and "disable"
  commands.  It is now possible to start a trace experiment with no enabled
  tracepoints; GDB will display a warning, but will allow the experiment to
  begin, assuming that tracepoints will be enabled as needed while the trace
  is running.

* New remote packets

  Dynamically enable a tracepoint in a started trace experiment.


  Dynamically disable a tracepoint in a started trace experiment.

* Dcache size (number of lines) and line-size are now runtime-configurable
  via "set dcache line" and "set dcache line-size" commands.

*** Changes in GDB 7.3

* GDB has a new command: "thread find [REGEXP]".
  It finds the thread id whose name, target id, or thread extra info
  matches the given regular expression.

* The "catch syscall" command now works on mips*-linux* targets.

* The -data-disassemble MI command now supports modes 2 and 3 for
  dumping the instruction opcodes.

* New command line options

-data-directory DIR	Specify DIR as the "data-directory".
			This is mostly for testing purposes.

* The "maint set python auto-load on|off" command has been renamed to
  "set auto-load-scripts on|off".

* GDB has a new command: "set directories".
  It is like the "dir" command except that it replaces the
  source path list instead of augmenting it.

* GDB now understands thread names.

  On GNU/Linux, "info threads" will display the thread name as set by
  prctl or pthread_setname_np.

  There is also a new command, "thread name", which can be used to
  assign a name internally for GDB to display.

* OpenCL C
  Initial support for the OpenCL C language (http://www.khronos.org/opencl)
  has been integrated into GDB.

* Python scripting

  ** The function gdb.Write now accepts an optional keyword 'stream'.
     This keyword, when provided, will direct the output to either
     stdout, stderr, or GDB's logging output.

  ** Parameters can now be be sub-classed in Python, and in particular
     you may implement the get_set_doc and get_show_doc functions.
     This improves how Parameter set/show documentation is processed
     and allows for more dynamic content.

  ** Symbols, Symbol Table, Symbol Table and Line, Object Files,
     Inferior, Inferior Thread, Blocks, and Block Iterator APIs now
     have an is_valid method.

  ** Breakpoints can now be sub-classed in Python, and in particular
     you may implement a 'stop' function that is executed each time
     the inferior reaches that breakpoint.   

  ** New function gdb.lookup_global_symbol looks up a global symbol.

  ** GDB values in Python are now callable if the value represents a
     function.  For example, if 'some_value' represents a function that
     takes two integer parameters and returns a value, you can call
     that function like so:

     result = some_value (10,20)

  ** Module gdb.types has been added.
     It contains a collection of utilities for working with gdb.Types objects:
     get_basic_type, has_field, make_enum_dict.

  ** Module gdb.printing has been added.
     It contains utilities for writing and registering pretty-printers.
     New classes: PrettyPrinter,  SubPrettyPrinter,
     New function: register_pretty_printer.

  ** New commands "info pretty-printers", "enable pretty-printer" and
     "disable pretty-printer" have been added.

  ** gdb.parameter("directories") is now available.

  ** New function gdb.newest_frame returns the newest frame in the
     selected thread.

  ** The gdb.InferiorThread class has a new "name" attribute.  This
     holds the thread's name.

  ** Python Support for Inferior events.
     Python scripts can add observers to be notified of events
     occurring in the process being debugged.
     The following events are currently supported:
     - gdb.events.cont Continue event.
     - gdb.events.exited Inferior exited event.
     - gdb.events.stop Signal received, and Breakpoint hit events.

* C++ Improvements:

  ** GDB now puts template parameters in scope when debugging in an
     instantiation.  For example, if you have:

     template<int X> int func (void) { return X; }

     then if you step into func<5>, "print X" will show "5".  This
     feature requires proper debuginfo support from the compiler; it
     was added to GCC 4.5.

  ** The motion commands "next", "finish", "until", and "advance" now
     work better when exceptions are thrown.  In particular, GDB will
     no longer lose control of the inferior; instead, the GDB will
     stop the inferior at the point at which the exception is caught.
     This functionality requires a change in the exception handling
     code that was introduced in GCC 4.5.

* GDB now follows GCC's rules on accessing volatile objects when
  reading or writing target state during expression evaluation.
  One notable difference to prior behavior is that "print x = 0"
  no longer generates a read of x; the value of the assignment is
  now always taken directly from the value being assigned.

* GDB now has some support for using labels in the program's source in
  linespecs.  For instance, you can use "advance label" to continue
  execution to a label.

* GDB now has support for reading and writing a new .gdb_index
  section.  This section holds a fast index of DWARF debugging
  information and can be used to greatly speed up GDB startup and
  operation.  See the documentation for `save gdb-index' for details.

* The "watch" command now accepts an optional "-location" argument.
  When used, this causes GDB to watch the memory referred to by the
  expression.  Such a watchpoint is never deleted due to it going out
  of scope.

* GDB now supports thread debugging of core dumps on GNU/Linux.

  GDB now activates thread debugging using the libthread_db library
  when debugging GNU/Linux core dumps, similarly to when debugging
  live processes.  As a result, when debugging a core dump file, GDB
  is now able to display pthread_t ids of threads.  For example, "info
  threads" shows the same output as when debugging the process when it
  was live.  In earlier releases, you'd see something like this:

  (gdb) info threads
   * 1 LWP 6780  main () at main.c:10

  While now you see this:

  (gdb) info threads
   * 1 Thread 0x7f0f5712a700 (LWP 6780)  main () at main.c:10

  It is also now possible to inspect TLS variables when debugging core

  When debugging a core dump generated on a machine other than the one
  used to run GDB, you may need to point GDB at the correct
  libthread_db library with the "set libthread-db-search-path"
  command.  See the user manual for more details on this command.

* When natively debugging programs on PowerPC BookE processors running
  a Linux kernel version 2.6.34 or later, GDB supports ranged breakpoints,
  which stop execution of the inferior whenever it executes an instruction
  at any address within the specified range.  See the "PowerPC Embedded"
  section in the user manual for more details.

* New features in the GDB remote stub, GDBserver

  ** GDBserver is now supported on PowerPC LynxOS (versions 4.x and 5.x),
     and i686 LynxOS (version 5.x).

  ** GDBserver is now supported on Blackfin Linux.

* New native configurations

ia64 HP-UX                      ia64-*-hpux*

* New targets:

Analog Devices, Inc. Blackfin Processor	bfin-*

* Ada task switching is now supported on sparc-elf targets when
  debugging a program using the Ravenscar Profile.  For more information,
  see the "Tasking Support when using the Ravenscar Profile" section
  in the GDB user manual.

* Guile support was removed.

* New features in the GNU simulator

  ** The --map-info flag lists all known core mappings.

  ** CFI flashes may be simulated via the "cfi" device.

*** Changes in GDB 7.2

* Shared library support for remote targets by default

  When GDB is configured for a generic, non-OS specific target, like
  for example, --target=arm-eabi or one of the many *-*-elf targets,
  GDB now queries remote stubs for loaded shared libraries using the
  `qXfer:libraries:read' packet.  Previously, shared library support
  was always disabled for such configurations.

* C++ Improvements:

  ** Argument Dependent Lookup (ADL)

  In C++ ADL lookup directs function search to the namespaces of its
  arguments even if the namespace has not been imported.
  For example:
    namespace A
        class B { }; 
        void foo (B) { }
    A::B b
  Here the compiler will search for `foo' in the namespace of 'b'
  and find A::foo.  GDB now supports this.  This construct is commonly
  used in the Standard Template Library for operators.

  ** Improved User Defined Operator Support

  In addition to member operators, GDB now supports lookup of operators
  defined in a namespace and imported with a `using' directive, operators
  defined in the global scope, operators imported implicitly from an
  anonymous namespace, and the ADL operators mentioned in the previous
  GDB now also supports proper overload resolution for all the previously
  mentioned flavors of operators.

  ** static const class members

  Printing of static const class members that are initialized in the
  class definition has been fixed.

* Windows Thread Information Block access.

  On Windows targets, GDB now supports displaying the Windows Thread
  Information Block (TIB) structure.  This structure is visible either
  by using the new command `info w32 thread-information-block' or, by
  dereferencing the new convenience variable named `$_tlb', a
  thread-specific pointer to the TIB.  This feature is also supported
  when remote debugging using GDBserver.

* Static tracepoints

  Static tracepoints are calls in the user program into a tracing
  library.  One such library is a port of the LTTng kernel tracer to
  userspace --- UST (LTTng Userspace Tracer, http://lttng.org/ust).
  When debugging with GDBserver, GDB now supports combining the GDB
  tracepoint machinery with such libraries.  For example: the user can
  use GDB to probe a static tracepoint marker (a call from the user
  program into the tracing library) with the new "strace" command (see
  "New commands" below).  This creates a "static tracepoint" in the
  breakpoint list, that can be manipulated with the same feature set
  as fast and regular tracepoints.  E.g., collect registers, local and
  global variables, collect trace state variables, and define
  tracepoint conditions.  In addition, the user can collect extra
  static tracepoint marker specific data, by collecting the new
  $_sdata internal variable.  When analyzing the trace buffer, you can
  inspect $_sdata like any other variable available to GDB.  For more
  information, see the "Tracepoints" chapter in GDB user manual.  New
  remote packets have been defined to support static tracepoints, see
  the "New remote packets" section below.

* Better reconstruction of tracepoints after disconnected tracing

  GDB will attempt to download the original source form of tracepoint
  definitions when starting a trace run, and then will upload these
  upon reconnection to the target, resulting in a more accurate
  reconstruction of the tracepoints that are in use on the target.

* Observer mode

  You can now exercise direct control over the ways that GDB can
  affect your program.  For instance, you can disallow the setting of
  breakpoints, so that the program can run continuously (assuming
  non-stop mode).  In addition, the "observer" variable is available
  to switch all of the different controls; in observer mode, GDB
  cannot affect the target's behavior at all, which is useful for
  tasks like diagnosing live systems in the field.

* The new convenience variable $_thread holds the number of the
  current thread.

* New remote packets


  Return the address of the Windows Thread Information Block of a given thread.


  In response to several of the tracepoint packets, the target may now
  also respond with a number of intermediate `qRelocInsn' request
  packets before the final result packet, to have GDB handle
  relocating an instruction to execute at a different address.  This
  is particularly useful for stubs that support fast tracepoints.  GDB
  reports support for this feature in the qSupported packet.


  List static tracepoint markers in the target program.


  List static tracepoint markers at a given address in the target


  Read the static trace data collected (by a `collect $_sdata'
  tracepoint action).  The remote stub reports support for this packet
  to gdb's qSupported query.


  Send the current settings of GDB's permission flags.


  Send part of the source (textual) form of a tracepoint definition,
  which includes location, conditional, and action list.

* The source command now accepts a -s option to force searching for the
  script in the source search path even if the script name specifies
  a directory.

* New features in the GDB remote stub, GDBserver

  - GDBserver now support tracepoints (including fast tracepoints, and
    static tracepoints).  The feature is currently supported by the
    i386-linux and amd64-linux builds.  See the "Tracepoints support
    in gdbserver" section in the manual for more information.

    GDBserver JIT compiles the tracepoint's conditional agent
    expression bytecode into native code whenever possible for low
    overhead dynamic tracepoints conditionals.  For such tracepoints,
    an expression that examines program state is evaluated when the
    tracepoint is reached, in order to determine whether to capture
    trace data.  If the condition is simple and false, processing the
    tracepoint finishes very quickly and no data is gathered.

    GDBserver interfaces with the UST (LTTng Userspace Tracer) library
    for static tracepoints support.

  - GDBserver now supports x86_64 Windows 64-bit debugging.

* GDB now sends xmlRegisters= in qSupported packet to indicate that
  it understands register description.

* The --batch flag now disables pagination and queries.

* X86 general purpose registers

  GDB now supports reading/writing byte, word and double-word x86
  general purpose registers directly.  This means you can use, say,
  $ah or $ax to refer, respectively, to the byte register AH and
  16-bit word register AX that are actually portions of the 32-bit
  register EAX or 64-bit register RAX.

* The `commands' command now accepts a range of breakpoints to modify.
  A plain `commands' following a command that creates multiple
  breakpoints affects all the breakpoints set by that command.  This
  applies to breakpoints set by `rbreak', and also applies when a
  single `break' command creates multiple breakpoints (e.g.,
  breakpoints on overloaded c++ functions).

* The `rbreak' command now accepts a filename specification as part of
  its argument, limiting the functions selected by the regex to those
  in the specified file.

* Support for remote debugging Windows and SymbianOS shared libraries
  from Unix hosts has been improved.  Non Windows GDB builds now can
  understand target reported file names that follow MS-DOS based file
  system semantics, such as file names that include drive letters and
  use the backslash character as directory separator.  This makes it
  possible to transparently use the "set sysroot" and "set
  solib-search-path" on Unix hosts to point as host copies of the
  target's shared libraries.  See the new command "set
  target-file-system-kind" described below, and the "Commands to
  specify files" section in the user manual for more information.

* New commands

eval template, expressions...
  Convert the values of one or more expressions under the control
  of the string template to a command line, and call it.

set target-file-system-kind unix|dos-based|auto
show target-file-system-kind
  Set or show the assumed file system kind for target reported file

save breakpoints <filename>
  Save all current breakpoint definitions to a file suitable for use
  in a later debugging session.  To read the saved breakpoint
  definitions, use the `source' command.

`save tracepoints' is a new alias for `save-tracepoints'.  The latter
is now deprecated.

info static-tracepoint-markers
  Display information about static tracepoint markers in the target.

strace FN | FILE:LINE | *ADDR | -m MARKER_ID
  Define a static tracepoint by probing a marker at the given
  function, line, address, or marker ID.

set observer on|off
show observer
  Enable and disable observer mode.

set may-write-registers on|off
set may-write-memory on|off
set may-insert-breakpoints on|off
set may-insert-tracepoints on|off
set may-insert-fast-tracepoints on|off
set may-interrupt on|off
  Set individual permissions for GDB effects on the target.  Note that
  some of these settings can have undesirable or surprising
  consequences, particularly when changed in the middle of a session.
  For instance, disabling the writing of memory can prevent
  breakpoints from being inserted, cause single-stepping to fail, or
  even crash your program, if you disable after breakpoints have been
  inserted.  However, GDB should not crash.

set record memory-query on|off
show record memory-query
  Control whether to stop the inferior if memory changes caused
  by an instruction cannot be recorded.

* Changed commands

  The disassemble command now supports "start,+length" form of two arguments.

* Python scripting

** GDB now provides a new directory location, called the python directory,
   where Python scripts written for GDB can be installed.  The location
   of that directory is <data-directory>/python, where <data-directory>
   is the GDB data directory.  For more details, see section `Scripting
   GDB using Python' in the manual.

** The GDB Python API now has access to breakpoints, symbols, symbol
   tables, program spaces, inferiors, threads and frame's code blocks.
   Additionally, GDB Parameters can now be created from the API, and
   manipulated via set/show in the CLI.

** New functions gdb.target_charset, gdb.target_wide_charset,
   gdb.progspaces, gdb.current_progspace, and gdb.string_to_argv.

** New exception gdb.GdbError.

** Pretty-printers are now also looked up in the current program space.

** Pretty-printers can now be individually enabled and disabled.

** GDB now looks for names of Python scripts to auto-load in a
   special section named `.debug_gdb_scripts', in addition to looking
   for a OBJFILE-gdb.py script when OBJFILE is read by the debugger.

* Tracepoint actions were unified with breakpoint commands. In particular,
there are no longer differences in "info break" output for breakpoints and
tracepoints and the "commands" command can be used for both tracepoints and
regular breakpoints.

* New targets

ARM Symbian			arm*-*-symbianelf*

* D language support.
  GDB now supports debugging programs written in the D programming

* GDB now supports the extended ptrace interface for PowerPC which is
  available since Linux kernel version 2.6.34.  This automatically enables
  any hardware breakpoints and additional hardware watchpoints available in
  the processor.  The old ptrace interface exposes just one hardware
  watchpoint and no hardware breakpoints.

* GDB is now able to use the Data Value Compare (DVC) register available on
  embedded PowerPC processors to implement in hardware simple watchpoint
  conditions of the form:


  This works in native GDB running on Linux kernels with the extended ptrace
  interface mentioned above.

*** Changes in GDB 7.1

* C++ Improvements

  ** Namespace Support

  GDB now supports importing of namespaces in C++.  This enables the
  user to inspect variables from imported namespaces.  Support for
  namepace aliasing has also been added.  So, if a namespace is 
  aliased in the current scope (e.g. namepace C=A; ) the user can 
  print variables using the alias (e.g. (gdb) print C::x).

  ** Bug Fixes

  All known bugs relating to the printing of virtual base class were
  fixed.  It is now possible to call overloaded static methods using a
  qualified name.

  ** Cast Operators

  The C++ cast operators static_cast<>, dynamic_cast<>, const_cast<>,
  and reinterpret_cast<> are now handled by the C++ expression parser.

* New targets

Xilinx MicroBlaze		microblaze-*-*
Renesas RX			rx-*-elf

* New Simulators

Xilinx MicroBlaze		microblaze
Renesas RX			rx

* Multi-program debugging.

  GDB now has support for multi-program (a.k.a. multi-executable or
  multi-exec) debugging.  This allows for debugging multiple inferiors
  simultaneously each running a different program under the same GDB
  session.  See "Debugging Multiple Inferiors and Programs" in the
  manual for more information.  This implied some user visible changes
  in the multi-inferior support.  For example, "info inferiors" now
  lists inferiors that are not running yet or that have exited
  already.  See also "New commands" and "New options" below.

* New tracing features

  GDB's tracepoint facility now includes several new features:

  ** Trace state variables

  GDB tracepoints now include support for trace state variables, which
  are variables managed by the target agent during a tracing
  experiment.  They are useful for tracepoints that trigger each
  other, so for instance one tracepoint can count hits in a variable,
  and then a second tracepoint has a condition that is true when the
  count reaches a particular value.  Trace state variables share the
  $-syntax of GDB convenience variables, and can appear in both
  tracepoint actions and condition expressions.  Use the "tvariable"
  command to create, and "info tvariables" to view; see "Trace State
  Variables" in the manual for more detail.

  ** Fast tracepoints

  GDB now includes an option for defining fast tracepoints, which
  targets may implement more efficiently, such as by installing a jump
  into the target agent rather than a trap instruction.  The resulting
  speedup can be by two orders of magnitude or more, although the
  tradeoff is that some program locations on some target architectures
  might not allow fast tracepoint installation, for instance if the
  instruction to be replaced is shorter than the jump.  To request a
  fast tracepoint, use the "ftrace" command, with syntax identical to
  the regular trace command.

  ** Disconnected tracing

  It is now possible to detach GDB from the target while it is running
  a trace experiment, then reconnect later to see how the experiment
  is going.  In addition, a new variable disconnected-tracing lets you
  tell the target agent whether to continue running a trace if the
  connection is lost unexpectedly.

  ** Trace files

  GDB now has the ability to save the trace buffer into a file, and
  then use that file as a target, similarly to you can do with
  corefiles.  You can select trace frames, print data that was
  collected in them, and use tstatus to display the state of the
  tracing run at the moment that it was saved.  To create a trace
  file, use "tsave <filename>", and to use it, do "target tfile

  ** Circular trace buffer

  You can ask the target agent to handle the trace buffer as a
  circular buffer, discarding the oldest trace frames to make room for
  newer ones, by setting circular-trace-buffer to on.  This feature may
  not be available for all target agents.

* Changed commands

  The disassemble command, when invoked with two arguments, now requires
  the arguments to be comma-separated.

info variables
  The info variables command now displays variable definitions.  Files
  which only declare a variable are not shown.

  The source command is now capable of sourcing Python scripts.
  This feature is dependent on the debugger being build with Python

  Related to this enhancement is also the introduction of a new command
  "set script-extension" (see below).

* New commands (for set/show, see "New options" below)

record save [<FILENAME>]
  Save a file (in core file format) containing the process record 
  execution log for replay debugging at a later time.

record restore <FILENAME>
  Restore the process record execution log that was saved at an
  earlier time, for replay debugging.

add-inferior [-copies <N>] [-exec <FILENAME>]
  Add a new inferior.

clone-inferior [-copies <N>] [ID]
  Make a new inferior ready to execute the same program another
  inferior has loaded.

remove-inferior ID
  Remove an inferior.

maint info program-spaces
  List the program spaces loaded into GDB.

set remote interrupt-sequence [Ctrl-C | BREAK | BREAK-g]
show remote interrupt-sequence
  Allow the user to select one of ^C, a BREAK signal or BREAK-g
  as the sequence to the remote target in order to interrupt the execution.
  Ctrl-C is a default.  Some system prefers BREAK which is high level of
  serial line for some certain time.  Linux kernel prefers BREAK-g, a.k.a
  Magic SysRq g.  It is BREAK signal and character 'g'.

set remote interrupt-on-connect [on | off]
show remote interrupt-on-connect
  When interrupt-on-connect is ON, gdb sends interrupt-sequence to
  remote target when gdb connects to it.  This is needed when you debug
  Linux kernel.

set remotebreak [on | off]
show remotebreak
Deprecated.  Use "set/show remote interrupt-sequence" instead.

tvariable $NAME [ = EXP ]
  Create or modify a trace state variable.

info tvariables
  List trace state variables and their values.

delete tvariable $NAME ...
  Delete one or more trace state variables.

teval EXPR, ...
  Evaluate the given expressions without collecting anything into the
  trace buffer. (Valid in tracepoint actions only.)

ftrace FN / FILE:LINE / *ADDR
  Define a fast tracepoint at the given function, line, or address.

* New expression syntax

  GDB now parses the 0b prefix of binary numbers the same way as GCC does.
  GDB now parses 0b101010 identically with 42.

* New options

set follow-exec-mode new|same
show follow-exec-mode
  Control whether GDB reuses the same inferior across an exec call or
  creates a new one.  This is useful to be able to restart the old
  executable after the inferior having done an exec call.

set default-collect EXPR, ...
show default-collect
   Define a list of expressions to be collected at each tracepoint.
   This is a useful way to ensure essential items are not overlooked,
   such as registers or a critical global variable.

set disconnected-tracing
show disconnected-tracing
   If set to 1, the target is instructed to continue tracing if it
   loses its connection to GDB.  If 0, the target is to stop tracing
   upon disconnection.

set circular-trace-buffer
show circular-trace-buffer
   If set to on, the target is instructed to use a circular trace buffer
   and discard the oldest trace frames instead of stopping the trace due
   to a full trace buffer.  If set to off, the trace stops when the buffer
   fills up.  Some targets may not support this.

set script-extension off|soft|strict
show script-extension
   If set to "off", the debugger does not perform any script language
   recognition, and all sourced files are assumed to be GDB scripts.
   If set to "soft" (the default), files are sourced according to
   filename extension, falling back to GDB scripts if the first
   evaluation failed.
   If set to "strict", files are sourced according to filename extension.

set ada trust-PAD-over-XVS on|off
show ada trust-PAD-over-XVS
   If off, activate a workaround against a bug in the debugging information
   generated by the compiler for PAD types (see gcc/exp_dbug.ads in
   the GCC sources for more information about the GNAT encoding and
   PAD types in particular).  It is always safe to set this option to
   off, but this introduces a slight performance penalty.  The default
   is on.

* Python API Improvements

  ** GDB provides the new class gdb.LazyString.  This is useful in
     some pretty-printing cases.  The new method gdb.Value.lazy_string
     provides a simple way to create objects of this type.

  ** The fields returned by gdb.Type.fields now have an
     `is_base_class' attribute.

  ** The new method gdb.Type.range returns the range of an array type.

  ** The new method gdb.parse_and_eval can be used to parse and
     evaluate an expression.

* New remote packets

   Define a trace state variable.

   Get the current value of a trace state variable.

   Set desired tracing behavior upon disconnection.

   Set the trace buffer to be linear or circular.

qTfP, qTsP
   Get data about the tracepoints currently in use.

* Bug fixes

Process record now works correctly with hardware watchpoints.

Multiple bug fixes have been made to the mips-irix port, making it
much more reliable. In particular:
  - Debugging threaded applications is now possible again.  Previously,
    GDB would hang while starting the program, or while waiting for
    the program to stop at a breakpoint.
  - Attaching to a running process no longer hangs.
  - An error occurring while loading a core file has been fixed.
  - Changing the value of the PC register now works again.  This fixes
    problems observed when using the "jump" command, or when calling
    a function from GDB, or even when assigning a new value to $pc.
  - With the "finish" and "return" commands, the return value for functions
    returning a small array is now correctly printed.
  - It is now possible to break on shared library code which gets executed
    during a shared library init phase (code executed while executing
    their .init section).  Previously, the breakpoint would have no effect.
  - GDB is now able to backtrace through the signal handler for
    non-threaded programs.

PIE (Position Independent Executable) programs debugging is now supported.
This includes debugging execution of PIC (Position Independent Code) shared
libraries although for that, it should be possible to run such libraries as an
executable program.

*** Changes in GDB 7.0

* GDB now has an interface for JIT compilation.  Applications that
dynamically generate code can create symbol files in memory and register
them with GDB.  For users, the feature should work transparently, and
for JIT developers, the interface is documented in the GDB manual in the
"JIT Compilation Interface" chapter.

* Tracepoints may now be conditional.  The syntax is as for
breakpoints; either an "if" clause appended to the "trace" command,
or the "condition" command is available.  GDB sends the condition to
the target for evaluation using the same bytecode format as is used
for tracepoint actions.

* The disassemble command now supports: an optional /r modifier, print the
raw instructions in hex as well as in symbolic form, and an optional /m
modifier to print mixed source+assembly.

* Process record and replay

  In a architecture environment that supports ``process record and
  replay'', ``process record and replay'' target can record a log of
  the process execution, and replay it with both forward and reverse
  execute commands.

* Reverse debugging: GDB now has new commands reverse-continue, reverse-
step, reverse-next, reverse-finish, reverse-stepi, reverse-nexti, and
set execution-direction {forward|reverse}, for targets that support
reverse execution.

* GDB now supports hardware watchpoints on MIPS/Linux systems.  This
feature is available with a native GDB running on kernel version
2.6.28 or later.

* GDB now has support for multi-byte and wide character sets on the
target.  Strings whose character type is wchar_t, char16_t, or
char32_t are now correctly printed.  GDB supports wide- and unicode-
literals in C, that is, L'x', L"string", u'x', u"string", U'x', and
U"string" syntax.  And, GDB allows the "%ls" and "%lc" formats in
`printf'.  This feature requires iconv to work properly; if your
system does not have a working iconv, GDB can use GNU libiconv.  See
the installation instructions for more information.

* GDB now supports automatic retrieval of shared library files from
remote targets.  To use this feature, specify a system root that begins
with the `remote:' prefix, either via the `set sysroot' command or via
the `--with-sysroot' configure-time option.

* "info sharedlibrary" now takes an optional regex of libraries to show,
and it now reports if a shared library has no debugging information.

* Commands `set debug-file-directory', `set solib-search-path' and `set args'
now complete on file names.

* When completing in expressions, gdb will attempt to limit
completions to allowable structure or union fields, where appropriate.
For instance, consider:

    # struct example { int f1; double f2; };
    # struct example variable;
    (gdb) p variable.

If the user types TAB at the end of this command line, the available
completions will be "f1" and "f2".

* Inlined functions are now supported.  They show up in backtraces, and
the "step", "next", and "finish" commands handle them automatically.

* GDB now supports the token-splicing (##) and stringification (#)
operators when expanding macros.  It also supports variable-arity

* GDB now supports inspecting extra signal information, exported by
the new $_siginfo convenience variable.  The feature is currently
implemented on linux ARM, i386 and amd64.

* GDB can now display the VFP floating point registers and NEON vector
registers on ARM targets.  Both ARM GNU/Linux native GDB and gdbserver
can provide these registers (requires Linux 2.6.30 or later).  Remote
and simulator targets may also provide them.

* New remote packets

  Search memory for a sequence of bytes.

  Turn off `+'/`-' protocol acknowledgments to permit more efficient
  operation over reliable transport links.  Use of this packet is
  controlled by the `set remote noack-packet' command.

  Kill the process with the specified process ID.  Use this in preference
  to `k' when multiprocess protocol extensions are supported.

  Obtains additional operating system information

  Read or write additional signal information.

* Removed remote protocol undocumented extension

  An undocumented extension to the remote protocol's `S' stop reply
  packet that permited the stub to pass a process id was removed.
  Remote servers should use the `T' stop reply packet instead.

* GDB now supports multiple function calling conventions according to the
DWARF-2 DW_AT_calling_convention function attribute.
* The SH target utilizes the aforementioned change to distinguish between gcc
and Renesas calling convention.  It also adds the new CLI commands
`set/show sh calling-convention'.

* GDB can now read compressed debug sections, as produced by GNU gold
with the --compress-debug-sections=zlib flag.

* 64-bit core files are now supported on AIX.

* Thread switching is now supported on Tru64.

* Watchpoints can now be set on unreadable memory locations, e.g. addresses
which will be allocated using malloc later in program execution.

* The qXfer:libraries:read remote procotol packet now allows passing a
list of section offsets.

* On GNU/Linux, GDB can now attach to stopped processes.  Several race
conditions handling signals delivered during attach or thread creation
have also been fixed.

* GDB now supports the use of DWARF boolean types for Ada's type Boolean.
>From the user's standpoint, all unqualified instances of True and False
are treated as the standard definitions, regardless of context.

* GDB now parses C++ symbol and type names more flexibly.  For
example, given:

   template<typename T> class C { };
   C<char const *> c;

GDB will now correctly handle all of:

   ptype C<char const *>
   ptype C<char const*>
   ptype C<const char *>
   ptype C<const char*>

* New features in the GDB remote stub, gdbserver

  - The "--wrapper" command-line argument tells gdbserver to use a
  wrapper program to launch programs for debugging.

  - On PowerPC and S/390 targets, it is now possible to use a single
  gdbserver executable to debug both 32-bit and 64-bit programs.
  (This requires gdbserver itself to be built as a 64-bit executable.)

  - gdbserver uses the new noack protocol mode for TCP connections to
  reduce communications latency, if also supported and enabled in GDB.

  - Support for the sparc64-linux-gnu target is now included in

  - The amd64-linux build of gdbserver now supports debugging both
    32-bit and 64-bit programs.

  - The i386-linux, amd64-linux, and i386-win32 builds of gdbserver
    now support hardware watchpoints, and will use them automatically
    as appropriate.

* Python scripting

  GDB now has support for scripting using Python.  Whether this is
  available is determined at configure time.

  New GDB commands can now be written in Python.

* Ada tasking support

  Ada tasks can now be inspected in GDB. The following commands have
  been introduced:

    info tasks
      Print the list of Ada tasks.
    info task N
      Print detailed information about task number N.
      Print the task number of the current task.
    task N
      Switch the context of debugging to task number N.

* Support for user-defined prefixed commands.  The "define" command can
add new commands to existing prefixes, e.g. "target".

* Multi-inferior, multi-process debugging.

  GDB now has generalized support for multi-inferior debugging.  See
  "Debugging Multiple Inferiors" in the manual for more information.
  Although availability still depends on target support, the command
  set is more uniform now.  The GNU/Linux specific multi-forks support
  has been migrated to this new framework.  This implied some user
  visible changes; see "New commands" and also "Removed commands"

* Target descriptions can now describe the target OS ABI.  See the
"Target Description Format" section in the user manual for more

* Target descriptions can now describe "compatible" architectures
to indicate that the target can execute applications for a different
architecture in addition to those for the main target architecture.
See the "Target Description Format" section in the user manual for
more information.

* Multi-architecture debugging.

  GDB now includes general supports for debugging applications on
  hybrid systems that use more than one single processor architecture
  at the same time.  Each such hybrid architecture still requires
  specific support to be added.  The only hybrid architecture supported
  in this version of GDB is the Cell Broadband Engine.

* GDB now supports integrated debugging of Cell/B.E. applications that
use both the PPU and SPU architectures.  To enable support for hybrid
Cell/B.E. debugging, you need to configure GDB to support both the
powerpc-linux or powerpc64-linux and the spu-elf targets, using the
--enable-targets configure option.

* Non-stop mode debugging.

  For some targets, GDB now supports an optional mode of operation in
  which you can examine stopped threads while other threads continue
  to execute freely.  This is referred to as non-stop mode, with the
  old mode referred to as all-stop mode.  See the "Non-Stop Mode"
  section in the user manual for more information.

  To be able to support remote non-stop debugging, a remote stub needs
  to implement the non-stop mode remote protocol extensions, as
  described in the "Remote Non-Stop" section of the user manual.  The
  GDB remote stub, gdbserver, has been adjusted to support these
  extensions on linux targets.

* New commands (for set/show, see "New options" below)

catch syscall [NAME(S) | NUMBER(S)]
  Catch system calls.  Arguments, which should be names of system
  calls or their numbers, mean catch only those syscalls.  Without
  arguments, every syscall will be caught.  When the inferior issues
  any of the specified syscalls, GDB will stop and announce the system
  call, both when it is called and when its call returns.  This
  feature is currently available with a native GDB running on the
  Linux Kernel, under the following architectures: x86, x86_64,
  PowerPC and PowerPC64.

find [/size-char] [/max-count] start-address, end-address|+search-space-size,
    val1 [, val2, ...]
  Search memory for a sequence of bytes.

maint set python print-stack
maint show python print-stack
  Show a stack trace when an error is encountered in a Python script.

python [CODE]
  Invoke CODE by passing it to the Python interpreter.

macro define
macro list
macro undef
  These allow macros to be defined, undefined, and listed

info os processes
  Show operating system information about processes.

info inferiors
  List the inferiors currently under GDB's control.

inferior NUM
  Switch focus to inferior number NUM.

detach inferior NUM
  Detach from inferior number NUM.

kill inferior NUM
  Kill inferior number NUM.

* New options

set spu stop-on-load
show spu stop-on-load
  Control whether to stop for new SPE threads during Cell/B.E. debugging.

set spu auto-flush-cache
show spu auto-flush-cache
  Control whether to automatically flush the software-managed cache
  during Cell/B.E. debugging.

set sh calling-convention
show sh calling-convention
  Control the calling convention used when calling SH target functions.

set debug timestamp
show debug timestamp
  Control display of timestamps with GDB debugging output.

set disassemble-next-line
show disassemble-next-line
  Control display of disassembled source lines or instructions when
  the debuggee stops.

set remote noack-packet
show remote noack-packet
  Set/show the use of remote protocol QStartNoAckMode packet.  See above
  under "New remote packets."

set remote query-attached-packet
show remote query-attached-packet
  Control use of remote protocol `qAttached' (query-attached) packet.

set remote read-siginfo-object
show remote read-siginfo-object
  Control use of remote protocol `qXfer:siginfo:read' (read-siginfo-object)

set remote write-siginfo-object
show remote write-siginfo-object
  Control use of remote protocol `qXfer:siginfo:write' (write-siginfo-object)

set remote reverse-continue
show remote reverse-continue
  Control use of remote protocol 'bc' (reverse-continue) packet.

set remote reverse-step
show remote reverse-step
  Control use of remote protocol 'bs' (reverse-step) packet.

set displaced-stepping
show displaced-stepping
  Control displaced stepping mode.  Displaced stepping is a way to
  single-step over breakpoints without removing them from the debuggee.
  Also known as "out-of-line single-stepping".

set debug displaced
show debug displaced
  Control display of debugging info for displaced stepping.

maint set internal-error
maint show internal-error
  Control what GDB does when an internal error is detected.

maint set internal-warning
maint show internal-warning
  Control what GDB does when an internal warning is detected.

set exec-wrapper
show exec-wrapper
unset exec-wrapper
  Use a wrapper program to launch programs for debugging.

set multiple-symbols (all|ask|cancel)
show multiple-symbols
  The value of this variable can be changed to adjust the debugger behavior
  when an expression or a breakpoint location contains an ambiguous symbol
  name (an overloaded function name, for instance).
set breakpoint always-inserted
show breakpoint always-inserted
  Keep breakpoints always inserted in the target, as opposed to inserting
  them when resuming the target, and removing them when the target stops.
  This option can improve debugger performance on slow remote targets.

set arm fallback-mode (arm|thumb|auto)
show arm fallback-mode
set arm force-mode (arm|thumb|auto)
show arm force-mode
  These commands control how ARM GDB determines whether instructions
  are ARM or Thumb.  The default for both settings is auto, which uses
  the current CPSR value for instructions without symbols; previous
  versions of GDB behaved as if "set arm fallback-mode arm".

set disable-randomization
show disable-randomization
  Standalone programs run with the virtual address space randomization enabled
  by default on some platforms.  This option keeps the addresses stable across
  multiple debugging sessions.

set non-stop
show non-stop
  Control whether other threads are stopped or not when some thread hits
  a breakpoint.

set target-async
show target-async
  Requests that asynchronous execution is enabled in the target, if available.
  In this case, it's possible to resume target in the background, and interact
  with GDB while the target is running.  "show target-async" displays the
  current state of asynchronous execution of the target.

set target-wide-charset
show target-wide-charset
  The target-wide-charset is the name of the character set that GDB
  uses when printing characters whose type is wchar_t.

set tcp auto-retry (on|off)
show tcp auto-retry
set tcp connect-timeout
show tcp connect-timeout
  These commands allow GDB to retry failed TCP connections to a remote stub
  with a specified timeout period; this is useful if the stub is launched
  in parallel with GDB but may not be ready to accept connections immediately.

set libthread-db-search-path
show libthread-db-search-path
  Control list of directories which GDB will search for appropriate

set schedule-multiple (on|off)
show schedule-multiple
  Allow GDB to resume all threads of all processes or only threads of
  the current process.

set stack-cache
show stack-cache
  Use more aggressive caching for accesses to the stack.  This improves
  performance of remote debugging (particularly backtraces) without
  affecting correctness.

set interactive-mode (on|off|auto)
show interactive-mode
  Control whether GDB runs in interactive mode (on) or not (off).
  When in interactive mode, GDB waits for the user to answer all
  queries.  Otherwise, GDB does not wait and assumes the default
  answer.  When set to auto (the default), GDB determines which
  mode to use based on the stdin settings.

* Removed commands

info forks
  For program forks, this is replaced by the new more generic `info
  inferiors' command.  To list checkpoints, you can still use the
  `info checkpoints' command, which was an alias for the `info forks'

fork NUM
  Replaced by the new `inferior' command.  To switch between
  checkpoints, you can still use the `restart' command, which was an
  alias for the `fork' command.

process PID
  This is removed, since some targets don't have a notion of
  processes.  To switch between processes, you can still use the
  `inferior' command using GDB's own inferior number.

delete fork NUM
  For program forks, this is replaced by the new more generic `kill
  inferior' command.  To delete a checkpoint, you can still use the
  `delete checkpoint' command, which was an alias for the `delete
  fork' command.

detach fork NUM
  For program forks, this is replaced by the new more generic `detach
  inferior' command.  To detach a checkpoint, you can still use the
  `detach checkpoint' command, which was an alias for the `detach
  fork' command.

* New native configurations

x86/x86_64 Darwin		i[34567]86-*-darwin*

x86_64 MinGW			x86_64-*-mingw*

* New targets

Lattice Mico32                  lm32-*
x86 DICOS			i[34567]86-*-dicos*
x86_64 DICOS		        x86_64-*-dicos*
S+core 3			score-*-*

* The GDB remote stub, gdbserver, now supports x86 Windows CE
  (mingw32ce) debugging.

* Removed commands

catch load
catch unload
  These commands were actually not implemented on any target.

More information about the Cygwin-announce mailing list