What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 7.1
+*** Changes since GDB 7.2
+
+* Python scripting
+
+ ** 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)
+
+* 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.
+
+* 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
+ dumps.
+
+ 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.
+
+* New features in the GDB remote stub, GDBserver
+
+ ** GDBserver is now supported on PowerPC LynxOS 4.x.
+
+*** 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
+ foo(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
+ entry.
+ 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
+
+qGetTIBAddr
+
+ Return the address of the Windows Thread Information Block of a given thread.
+
+qRelocInsn
+
+ 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.
+
+qTfSTM, qTsSTM
+
+ List static tracepoint markers in the target program.
+
+qTSTMat
+
+ List static tracepoint markers at a given address in the target
+ program.
+
+qXfer:statictrace:read
+
+ 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.
+
+QAllow
+
+ Send the current settings of GDB's permission flags.
+
+QTDPsrc
+
+ 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
* New features in the GDB remote stub, GDBserver
- - GDBserver now support tracepoints. The feature is currently
- supported by the i386-linux and amd64-linux builds.
+ - 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.
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
+ names.
+
+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
+
+disassemble
+ 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, and frame's code blocks.
+ 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, and gdb.current_progspace.
+ 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
ARM Symbian arm*-*-symbianelf*
+* D language support.
+ GDB now supports debugging programs written in the D programming
+ language.
+
+* 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:
+
+ watch ADDRESS|VARIABLE if ADDRESS|VARIABLE == CONSTANT EXPRESSION
+
+ This works in native GDB running on Linux kernels with the extended ptrace
+ interface mentioned above.
+
*** Changes in GDB 7.1
* C++ Improvements
the target for evaluation using the same bytecode format as is used
for tracepoint actions.
-* "disassemble" command with a /r modifier, print the raw instructions
-in hex as well as in symbolic form.
+* 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
packet that permited the stub to pass a process id was removed.
Remote servers should use the `T' stop reply packet instead.
-* The "disassemble" command now supports an optional /m modifier to print mixed
-source+assembly.
-
* GDB now supports multiple function calling conventions according to the
DWARF-2 DW_AT_calling_convention function attribute.